[PHP-users 26137] Re: mb_convert で文字化け

MORIYAMA Masayuki msyk @ mtg.biglobe.ne.jp
2005年 7月 13日 (水) 11:47:33 JST


森山将之です。

On Wed, 13 Jul 2005 10:37:39 +0900
ishikata @ anet.ne.jp wrote:

> 機種依存文字との認識はしているのですが、EUCのままWindows のIE等で表示す
> ると正常に表示され、PHPにてmb_convert_encodingしてSJISのCSV等に出力する
> と文字化けしてしまい困っています。(IEで表示出来なければ説明出来るのです
> が表示出来てしまうので・・・)

Windows の IE の EUC-JP は CP51932 と呼ばれるもので、eucJP-open
(PHP では eucjP-win) とは異なるものです。
PHP の eucJP-win で変換すると文字化けします。

機種依存文字を正しく取り扱うには、PHP の HTTP 入出力を SJIS-win もしく
は UTF-8 にする必要があります。

UTF-8 は別の問題(ブラウザによってUTF-8 での「〜」などの文字のコード値
が異なる)がありますので、個人的には HTTPの入出力文字コードは SJIS-win 
とする事を推奨します。

PHP の内部エンコーディングに関しては UTF-8 とした方がいいでしょうね。

# CP932(SJIS-win)<->Unicode の変換は、多くのソフトで実装されていて比較
# 的に安定して使えますので。

この辺のノウハウは、Web上に明文化された資料がないので、問題が発覚して
から慌てて調べて、試行錯誤してみたりするけれども、問題解決できないとい
うケースが多いのかもしれませんね。

‖森山 将之 (MORIYAMA Masayuki)
‖e-mail: msyk @ mtg.biglobe.ne.jp



PHP-users メーリングリストの案内