株式会社ネーブルス 社長のブログ
株式会社ネーブルス 代表取締役 福田一成のブログです。アメーバブログはこちら
テーブル名が日本語
昨日、書いたブログが今日のブログの伏線という
訳ではありませんが、丁度、こんな実験をしてみましたので
ブログに書いてみました。
Windows技術者でプログラムやデータベースの命名に
日本語を使用する人を時々見かけます。
マルチバイト文字と文字コードが多く存在する時代です。
Windowsの世界で完結するならば、問題ないのですが、
どんな状況、環境が生まれても、おかしくありません。
例えば
WindowsでSQL Serverが動いています。
そのテーブル名、カラム名が日本語です。
LinuxサーバのPHPから、そこに接続させる様な場合、
それぞれの環境の文字コードが異なっていたら
(例:Windows=Shift-JIS、UNIX=EUC-JP)
Select文、Insert文のテーブル名、カラム名に
文字コード変換をかけると言う不思議な処理をする事になります。
実際にやってみました。
文字コードさえ合わせれば、問題なく動きますね。
案外、アッサリと動いたので、少し残念です。
もう少し難航すると思ったのですが。
しかし、やはり色々と面倒になると予想されます。
恥ずかしながらソース公開します。
$con = mssql_pconnect('192.168.1.xxx', 'sa', 'xxxxxxx');
$ret = mssql_select_db('xxxdb', $con);
$query = mssql_query(mb_convert_encoding('select * from [T_M_日本]', 'SJIS'));
$row = mssql_fetch_row($query);
echo mb_convert_encoding($row[0], 'EUC-JP', 'SJIS').':'.mb_convert_encoding($row[1], 'EUC-JP', 'SJIS').'<br>';
mssql_free_result($query);
mssql_close($con);
分かりやすい様に掲載時にエラー処理を削除しています。
ここでは、クエリー全てを文字コード変換していますが、
場合によっては、テーブル名だけ、カラム名だけを
変換しなければならない状況になる可能性もあります。
最近は、UTF-8へ統合する動きもありますが、
まだ遠い先の話ですね。
それまでは、なるべく日本語テーブル名、日本語カラム名には、
出会いたくない物です。
Unix技術者でもデータベースに日本語で命名する人はいるのでしょうか?
今まで働いていて見かけた事は無いですけどね。