何となく歩いた結果

デジカメを持って色々な場所に出没し撮影した写真を公開。最近は東京の夜と里山をメインテーマに撮影中。システム開発の話題も。

PHP 日本語処理

2007-04-24 14:29:57 | ソフトにまつわる話
サイト構築する時に文字コード体系はどうするのか、意外と頭を悩ませるところだ。
例えばこのGooブログやYahoo、朝日新聞はEUCになっている。GoogleはUTF-8、読売新聞はShift-JISだ。
今開発中のサイトでもHTMLを記述する際の文字コードには何を使うのか悩んだが結局Shift-JISにした。今後はUTF-8で統一したほうが良いかなとも思ったのだが、昔ながらのWindowsMEを使っている担当者がいたりするので無難なShift-JISにしたのだ。

でも、MySQLではUTF-8を使っている。この辺りを考えるとやはりUTF-8で統一したほうが問題が起きにくいのかもしれない。

文字コードでShift-JISを使う場合には、PHPやODBC接続の際に、
mysql_query ("SET NAMES 'sjis'");
を実行してあげれば一応文字化けをせず(一部を除く)に使う事ができる。

データベースからデータを取得し文字列加工をする場合には次の2行を文字列を扱う命令の前に加える。

mb_language("Japanese");
mb_internal_encoding ("shift-jis");

更に日本語文字列を扱う場合には、mb_で始まる関数を使う。

例)$tempの中から●を見つけてその場所の値を返す。
$pos1 = mb_strpos($temp,"●");

例)$tempの3(最初が0のため)8文字を切り出す
$str1 = mb_substr($temp,2,8);

上の事がわかるまで随分時間を費やした。

思えば、Shift-JISの前には、JISコード、日立の汎用機で使ったKEISコードというのもあったな、EBCDICコードというのもあったし特殊なところでは写研の文字コード体系も扱った。各種のコード変換プログラムを作った事もあった。今後はUTF-8に一本化すれば文字化けの問題も減るのだろうが、まだまだ悩まされそうな状況は続くだろう。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする