mb_convert_encodingで文字化けするWin系の機種依存文字の解決
$sbj = '①オレンジアーム<br>②メロンアーム<br>③マンゴーアーム<br>'; |
こういうShift-jisの文字列がありまして。後処理のためにutf-8にする必要があり、特に何も考えずにmb_convert_encoding。
$sbj = mb_convert_encoding($sbj, 'UTF8', 'Shift-jis'); |
ところがこれだと出力が文字化けしてしまう。
$sbj = '①オレンジアーム<br>②メロンアーム<br>③マンゴーアーム<br>'; $sbj = mb_convert_encoding($sbj, 'UTF8', 'Shift-jis'); var_dump($sbj); |
出力結果
string()"?オレンジアーム<br>?メロンアーム<br>?マンゴーアーム<br>" |
全部”?”になってしまっている。
Shift-jisではなくSJIS-winを使う
①、②などの機種依存文字(見えない環境の方ごめんなさい、マル数字で(1)、(2)、と書いてあります)
を使う場合、通常のShift-jisではなくて、Windows用のSJIS-winという文字コードになる。
$sbj = '①オレンジアーム<br>②メロンアーム<br>③マンゴーアーム<br>'; $sbj = mb_convert_encoding($sbj, 'UTF8', 'SJIS-win'); var_dump($sbj); |
出力結果
string()"①オレンジアーム<br>②メロンアーム<br>③マンゴーアーム<br>" |
これでOK。ソイヤ!ソイヤ!
広告