mb_convert_encodingで文字化けするWin系の機種依存文字の解決

In: php

25 6月 2014
$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。ソイヤ!ソイヤ!

コメント

Comment Form

About this blog

ここは、SE見習いである私ことdaceloが、日夜習得していくシステム関連の備忘録、phpやWordPressTipsのネタ、あるいはSEOやWebマーケティング関連の雑感を投稿するブログです。 平日は大体毎日投稿しています。土日は休業日です。

カテゴリー

カテゴリー

アーカイブ