参照記事:携帯サイトの文字コードに気をつける
Shift_JIS
基本的に日本でモバイルサイトを制作する際には、文字コードはShift_JISを利用する。
出力文字コードはSJIS-win
モバイルサイトで絵文字を扱うには、各キャリアの絵文字が設定されている「外字領域」を含んだ文字エンコードを利用する必要がある。
PHPの場合では、それは「SJIS-win」になる。SJIS-winはShift_JISに比べて扱える文字種が増えていて、キャリアごとの絵文字領域もカヴァーしている。そのため、PHPでモバイルサイトを作成する場合にはShift_JISではなく、SJIS-winを使用する。
内部文字コードはeucJP-win
内部文字コードにEUC-JPを利用している場合(ソースファイル、プログラムファイルをEUC-JPで作成している場合)は「eucJP-win」を利用する。(これも出力文字コード同様、絵文字領域をカヴァーするため)
* php.ini の「mbstring.internal_encoding」項目において、内部文字エンコードに「eucJP-win」を指定してやる。
UTF-8
UTF-8の場合は、これは絵文字領域もカヴァーしているらしいので、とくに意識する必要はないらしい。
(内部文字コードはUTF-8を指定して、ソースファイルの文字コードもUTF-8使って、んで出力の場面でのみ mb_internal_encoding を使って出力文字コードに SJIS-win してやればいいってこと?試してないけど)
例外(SoftBankの3GC型)
SoftBankの3GC型端末では、文字コードを SJIS-win ではなく、UTF-8 で出力しないと不具合が起こるらしい。なので、通常の携帯端末へは SJIS-win で出力、SoftBankの3GC型端末のみ UTF-8 で出力という出し分けを行う必要がある、らしい。
PEARのNet_UserAgent_Mobileを使った場合の処理例
isSoftBank() && $agent-> isType3GC()) {
mb_convert_variables(mb_internal_encoding(), 'UTF-8', $_POST);
mb_convert_variables(mb_internal_encoding(), 'UTF-8', $_GET);
} else {
mb_convert_variables(mb_internal_encoding(), 'SJIS-win', $_POST);
mb_convert_variables(mb_internal_encoding(), 'SJIS-win', $_GET);
}
?>
コメント:0
トラックバック:0
- この記事のトラックバック URL
- http://showzine.info/blog/2009/06/%e3%83%a2%e3%83%90%e3%82%a4%e3%83%ab%e3%82%b5%e3%82%a4%e3%83%88%e5%88%b6%e4%bd%9c%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e6%96%87%e5%ad%97%e3%82%b3%e3%83%bc%e3%83%89%e3%81%ae%e6%89%b1%e3%81%84%e3%81%ab.html/trackback
- トラックバックの送信元リスト
- モバイルサイト制作における文字コードの扱いについて - SHOWJIN*BLOG より