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;
例:通常のコンバートの場合

しかしちょっとしたことで、絵文字の破壊を防ぐことができます。
文字コードを指定するときに
- 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;
文字コード変換しても壊れません

全角→半角変換のサンプル
$str = '絵文字[晴れ]も半角化もダイジョウブ';
// 文字コードを設定
mb_internal_encoding('SJIS-WIN');
$str = mb_convert_kana($str, 'ak');
// 出力
echo $str;
半角変換しても平気です

なお、上記の例では、
- 「SJIS-WIN <> EUCJP-WIN」
となっていますが、
- 「SJIS-WIN <> UTF-8」
の変換でも特に問題はありません。
関連:

PHP×携帯サイト デベロッパーズバイブル
携帯サイト制作 WEBデザインの新しいルール
Web担当者現場のノウハウVol12~今から始めるモバイルSEO&マーケティング入門
携帯サイトSEO&SEM向上テクニック
携帯Flashスクリプト入門
WEB+DB PRESS 総集編 [Vol.1~36]
ケータイHTMLコンパクトリファレンス
ケータイサイト制作王3
アマチュアスポーツ総合情報サイト
札幌のケータイ開発、Web開発なら

最近の記事