PHPで絵文字を壊さずに文字コードや全角半角変換を行う方法
    このエントリをはてなブックマークに登録

通常「mb_convert_encoding」や「mb_convert_kana」を使うと、iモードやEZWebの絵文字(SJIS形式)は壊れてしまいます。

壊れてしまう例

$str = '絵文字[晴れ]';

$str = mb_convert_encoding($str, 'EUCJP', 'SJIS');
$str = mb_convert_encoding($str, 'SJIS', 'EUCJP');

// 出力
echo $str;

例:通常のコンバートの場合
henkan_tips1.gif

 

しかしちょっとしたことで、絵文字の破壊を防ぐことができます。

文字コードを指定するときに

  • SJIS
  • EUC-JP

ではなく、

  • SJIS-WIN
  • EUCJP-WIN

を利用すればOKです。

以下がサンプルコードです。

 

文字コード変換のサンプル

$str = '絵文字[晴れ]';

$str = mb_convert_encoding($str, 'EUCJP-WIN', 'SJIS-WIN');
$str = mb_convert_encoding($str, 'SJIS-WIN', 'EUCJP-WIN');

// 出力
echo $str;

文字コード変換しても壊れません
henkan_tips2.gif

 

全角→半角変換のサンプル

$str = '絵文字[晴れ]も半角化もダイジョウブ';

// 文字コードを設定
mb_internal_encoding('SJIS-WIN');
$str = mb_convert_kana($str, 'ak');

// 出力
echo $str;

半角変換しても平気です
henkan_tips3.gif

 

なお、上記の例では、

  • 「SJIS-WIN <> EUCJP-WIN」

となっていますが、

  • 「SJIS-WIN <> UTF-8」

の変換でも特に問題はありません。

 

関連:


 

最近の記事







One Response to “PHPで絵文字を壊さずに文字コードや全角半角変換を行う方法”

  1. SJIS-WINやEUCJP-WINは正確には間違いです。
    http://pentan.info/php/sjiswin_eucjpwin.html

コメントを書く