F.Ko-Jiの「一秒後は未来」ではウェブやSEO、API、RSSといった技術的ネタから、ちょっとした豆知識や梅酒、エンタメ系まで様々な情報を不定期にお届けしています。

F.Ko-Jiの「一秒後は未来」 > モバイル > 携帯サイトをUTF-8で出力するかShift_JISで出力するか

携帯サイトをUTF-8で出力するかShift_JISで出力するか

  • B!
スポンサード リンク

携帯サイトをUTF-8で出力しようかShift_JISで出力しようか悩んでいました。

超手抜きでウェブサイトをモバイル対応 2008 - 15Pubを読むと「UTF-8でも大丈夫」とあるのですが、ウノウラボ Unoh Labs: 携帯サイト作成時のXHTMLでの相違点では「文字コードはShift_JIS」と書いてあります。

ネットで調べてみるとポイントになっているのは au の仕様で、公式ページには「EZwebでサポートする文字コードはShift-JISです」とあるにも関わらず、UTF-8でも文字化けすることなく表示できてしまうとのこと。

色々迷った挙げ句、「楽だから」という理由でまずはUTF-8で出力することにしました。

HTMLのContent-Typeは以下のように記述。

<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />

さらにHTTPヘッダでも以下のヘッダを返すように設定。

Content-Type: application/xhtml+xml; charset=UTF-8

これで大丈夫かなと思ったら、auを使っている友人から「文字化けしとるぞ」と言われてしまいました。(自分はauの実機を持っていない)

そこで、やはり無難にShift_JISにしたほうがいいのかな、と思ってやり直し。

Shift_JISに方針転換

プログラムやテンプレートファイルなどすべてUTF-8で書いているので、出力だけShift_JISにします。Smartyを使っているので、文字コードを変換するアウトプットフィルタを設定すれば済みます。

$smarty = new Smarty();
$smarty->load_filter('output', 'convert_encoding');

作成するプラグインは次のようなもの。

function smarty_outputfilter_convert_encoding ($output, &$smarty) {
    return mb_convert_encoding($output, 'SJIS-WIN', 'UTF-8');
}

わかりやすくするために、文字コードのところは定数にしていません。SJIS-WINを使っているのはこちらを参照。(ke-tai.org > Blog Archive > PHPで絵文字を壊さずに文字コードや全角半角変換を行う方法)

さらに、Shift_JISのページではフォームから送信されるデータの文字コードもShift_JISになるため、アプリケーションのフロントエンドで GET と POST の値をすべて UTF-8 に変換します。ここでもSJIS-WINから変換するようにすれば絵文字が崩れません。フロントエンドで変換したうえでアプリケーションにフォーム変数を渡します。

こうすることでプログラム内部ではUTF-8のデータが流れるので、データベースに保存される文字コードなどを気にする必要もありませんし、パソコン向けページはそのままUTF-8で出力ができます。

あとはHTTPヘッダとmetaタグのcharsetをShift_JISにします。

[2010-01-12] RSS フィードの URL が変わりました。お手数ですが RSS リーダーへの再登録をお願いします。
Subscribe with livedoor Reader Add to Google Subscribe with Fastladder My Yahoo!に追加 Bloglinesで閲読登録 はてなRSSに追加 エキサイトリーダーに登録


コメント

同じように悩んで、結局 UTF-8で作っちゃいました。
何人かのAUユーザーに試してもらっていますが、文字化けがあったという報告はありませんでした。

FROM でGETを投げたときに UTF-8ではなくSJISでパラメータが飛んでくるという問題はありましたが、GETではなく、POSTにしたら大丈夫でした。

もし、よろしければ、文字化けした機種を教えていただけないでしょうか。

>> rtiさん
コメントありがとうございます。

友人の機種は INFOBAR 2 (デバイスID: ST33) のはずです。

FORMの件もちらっと見かけたのでSJISにしましたが、POSTとGETで違うんですね。。。

コメントを投稿

(承認されるまでコメントは表示されません。)

プログラミング / モバイル

English version

前のエントリー: « 今年を代表するチームリーダーに東国原知事らを選出
次のエントリー: auはContent-Typeのヘッダの間違いに厳しい? »

トラックバック

このエントリーのトラックバックURL:

この一覧は、次のエントリーを参照しています: 携帯サイトをUTF-8で出力するかShift_JISで出力するか:

» auはContent-Typeのヘッダの間違いに厳しい? from F.Ko-Jiの「一秒後は未来」
先ほどの「携帯サイトをUTF-8で出力するかShift_JISで出力するか」の続きというかそれ以前の話。 auで「文字化け」の問題が発生する以前に、「『リ... [詳しくはこちら]

タイトル:

URL:

リンク用HTMLタグ:

Agile Media Network

AMN Partner Blog

広告掲載について

東京ナイロンガールズ
最近の注目記事
持っているガジェット
powered by Gadget Party
最近のつぶやき
えもにゅ

↑ 気持ち記録サービス「えもにゅ」です

このブログの読者になる

F.Ko-Jiの「一秒後は未来」 - RSSフィード

クマでもわかるこのブログの便利な更新チェック方法

DailyFeed

あわせて読みたいブログパーツ

フィードメーター - F.Ko-Jiの「一秒後は未来」

月別アーカイブ


<< March 2010
SuMoTuWeThFrSa
 123456
78910111213
14151617181920
21222324252627
28293031 
人気エントリー
TopHatenar
携帯からのアクセスは
QRコード
http://mob.fkoji.com/