モバイルサイト制作における文字コードの扱い

モバイルサイト制作における文字コードの扱いについて
復習の上、簡単にまとめなおしたので、それをメモ。

参照URL: 携帯サイトの文字コードに気をつける

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を使った場合の処理例

<?php
 
// Net_UserAgent_Mobile
require_once('Net/UserAgent/Mobile.php');
 
// Net_UserAgent_Mobileをインスタンス化
$agent = Net_UserAgent_Mobile::singleton();
 
// 出力する文字コードを変換
// SoftBankの3GC型端末はUTF-8に、それ以外はSJIS-winに変換
if ($agent->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);
}
 
?>
 

Comments

No comments so far.

  • Leave a Reply
     
    Your gravatar
    Your Name
     
     
     

    コメントリンクを nofollow free に設定することも出来ます。