MW211 EXIT

devlog
PHP/文字コード変換とBOMコード
2013年08月06日
「mb_convert_encoding()」で文字コード変換を行い、
「UTF-8→シフトJIS」変換をする場合、以下のような感じとなる。
┌──────────────────────────────────────┐
│$変換後SJIS = mb_convert_encoding($変換前UTF-8, 'SJIS-win', 'UTF-8');       │
└──────────────────────────────────────┘

だが、ここで「BOM付きUTF-8」だった場合には、「BOM」が除去されないので
「BOM付きシフトJIS」(?)になる。

当然ながら、そんなものはないので文字化けとなる。
ファイルの先頭が「EFBBBF」だとそのケースだ。

で、「BOM付きUTF-8」を「mb_convert_encoding()」で変換する機能………が、
あったら便利なのだが、見当たらない。

そこで手作業。
┌──────────────────────────────────────┐
│if (($変換前[0] == chr(0xEF))                                               │
│ && ($変換前[1] == chr(0xBB))                                               │
│ && ($変換前[2] == chr(0xBF)))                                              │
│{                                                                           │
│    $変換前 = substr($変換前, 3);                                           │
│}                                                                           │
└──────────────────────────────────────┘
まあ、こんな感じだわね。

なんかもっとすっきりする解決方法はないものか。
分類:PHP