PHPの文字コードではSJISじゃなくてSJIS-win、EUC-JPじゃなくてeucJP-winを
- 公開日:2013/8/24
この記事は最終更新日から11年以上が経過しています。
PHPで使える文字コード変換はmb_list_encodings()
を使って確認することができます。
foreach(mb_list_encodings() as $jcode) echo $jcode . '<br>¥n';
注目するのは「SJIS-win」と「eucJP-win」です。
どっちも「win」が付いているのでおわかりでしょうが、Windows拡張の文字に対応できるようになっています。
つまり、SJISよりもSJIS-winの方が文字が多いということです。
SJIS-winにあってSJISにない文字は、
- NEC 特殊文字(13区)
- NEC 選定 IBM 拡張文字(89~92区)
- IBM 拡張文字(115~119区)
よく使うところでは、以下のような文字がSJIS-winにあってSJISにはないのです。
- 丸数字 (①②③…⑳)
- ローマ数字 (ⅠⅡⅢ…Ⅹ、ⅰⅱⅲ…ⅹ)
- カッコ付きの株 (㈱)
- はしご高[はしごたか] (髙)
- たつ崎[たつさき、たちさき] (﨑)
具体的には下記参考サイトをご覧下さい。
では、「eucJP-win」はどうかというと、「SJIS-win」と同様に扱えるようになるわけではありません。
NEC 特殊文字(13区)くらいにしか対応していないので、はしご高[はしごたか] (髙)などは扱えません。そこでPHP5.2.1から新たに追加されたので「CP51932」です。これを使うと「SJIS-win」と同様に文字を扱えるようになります。
というわけで、文字コード変換の指定で「Shift_JIS」を使う時は「SJIS」じゃなくて「SJIS-win」を。
「EUC-JP」を使う時は「EUC-JP」じゃなくて「eucJP-win」を。