mb_convert_encodingで外字はエンコーディング変換される?

ちょっと気になったので、mb_convert_encoding で外字がきちんとコード変換されるか確認してみました。

Windowsの外字エディタで外字を登録して、mb_convert_encoding()を使って sjis-win、utf8、utf16 それぞれに変換後、文字コードを出力してみました。

SJIS:F040(unicode:E0000)

■SJISから変換

sjis-win: f040

utf8: ee8080

utf16: e000

■UTF-8から変換

sjis-win: f040

utf8: ee8080

utf16: e000

SJIS:F9FC(unicode:E757)

■SJISから変換

sjis-win: f9fc

utf8: ee9d97

utf16: e757

■UTF-8から変換

sjis-win: f9fc

utf8: ee9d97

utf16: e757

きちんと変換されています。

ただ、ブラウザに表示すると IEではクライアントPCに登録されている外字がきちんと表示されますが、Chromeでは正常に表示されず□で表示されました。(HTML上かブラウザの設定で表示させる方法があるのかも。)

データとして取り扱うには問題なさそうですね。

(あれっ?システムの外字対応の為に、PHPソースやDBの文字コードは、UTF-8でも問題ない?)

ちなみに、文字コードの16進数表記は bin2hex() 関数を使用しました。(ぐるぐる回してord()関数の結果を接続する方法より簡単です。)

では。

コメントは受け付けていません。