「メモ」携帯サイトをUTF-8で出力する方法とSEO評価
DoCoMo,AU,SoftbankのモバイルサイトをUTF-8 + XHTMLで作った時の対応方法と、モバイルクローラーのUTF-8ページに対する評価
対応端末
DoCoMo
- UTF-8で記述するにはXHTMLが前提なので、XHTML対応端末が必須になります。
EZwebでは文字コードの指定は必須です。
404 Not Found
また、EZwebでサポートする文字コードはShift-JISです。
文字コードの指定が無い場合、Shift-JIS以外の文字コードを指定した場合には、コンテンツが正しく表示されない (文字化けする) 場合がありますのご注意ください。
- 推奨してないっぽい
Softbank
- HTML,XHTML対応してるけど推奨はしていない?ただShift_JISの場合、FORMからの絵文字の送信が怪しい挙動をするのでUTF-8の方がちゃんとしてる
Content-Type
application/xhtml+xml; charset=UTF-8
AUは、
text/html; charset=UTF-8
ちなみにShift_JISの時は3キャリアとも、
application/xhtml+xml; charset=Shift_JIS
FORM
AUだけ何故かFORMからSUBMITされた値がShift_JISで送られてきます。
auのフォームはSJISで送られてくる
ケータイ飲食検索、au・ソフトバンク端末に対応|blog|たたみラボ
UTF-8対応と公表しているドコモはもちろんSoftBankも、ページの表示がUTF-8の場合はそのフォームから送られてくるクエリーも UTF-8でしたが、auはなんとページの表示がUTF-8だろうと、そのフォームに入力した文字列はSJISで送られてくることがわかりました。新旧8 機種試して全てそうだったのでauはそういう仕様なのかなと思います。
GET,POST共にFORMの値の場合なので、クエリーにUTF-8の日本語を引き回すようなときと切り分けるためEncode::Guessでとりあえず回避。
if ($agent->is_ezweb) { my $enc = guess_encoding($_); $_ = encode('x-utf8-kddi', decode('x-sjis-kddi-auto', $_)) unless ref $enc; }
機種依存文字?
DoCoMoの一部の端末で
¢ (セント) £ (ポンド) − (マイナス) ‖ (たて)
この辺の全角記号(実機では全角記号として扱われている)がFORMから半角で送信されてきて、キャリア間の絵文字互換用にEncode::JP::Mobile通すと?扱いになっちゃうため
$str =~ s/\302\242/\357\277\240/g; # cent $str =~ s/\302\243/\357\277\241/g; # pondo $str =~ s/\342\210\222/\357\274\215/g; # maenas $str =~ s/\342\200\226/\342\210\245/g; # tate
とりあえず直書きで全角に変更。
上記以外にもあると思われます。
(もっといい方法あるんだろうけど深く追っていない・・・・。うーむ)
SEO
5.遅くなりましたが基本です
文字コードはShift-JIS。
実践モバイルSEO講座|携帯サイトとして検索エンジンに認識させるための8つのTIPS | スマホサイト・アプリをつくろう。
JavaScriptは使わない。
これ基本です。携帯サイトっぽいという意味での基本です。
お願いします。
これは違うっぽいです。
サイトのリニューアルの際にShift_JIS -> UTF-8をやってみたんですけど、リニューアル前後でのAU Googleの検索流入数、INDEX数共に減少することなく、いくつかの最適化も行ったことも加えて増加傾向にあります。
いくつかの最適化方もそれほど大きなことをしたわけでは無いので文字コードによるマイナスポイントは特に無いと思います。
推奨していないAUでの検索結果においても文字化けせずに正しく表示されてることも確認しました。
(Googleのクローラーが勝手にやってるだけでAUはその辺関与してないとかな気が)
ちなみにYahoo Mobileは特に変化無し