「メモ」携帯サイトをUTF-8で出力する方法とSEO評価

DoCoMo,AU,SoftbankのモバイルサイトをUTF-8 + XHTMLで作った時の対応方法と、モバイルクローラーUTF-8ページに対する評価

対応端末

DoCoMo
- UTF-8で記述するにはXHTMLが前提なので、XHTML対応端末が必須になります。

AU

EZwebでは文字コードの指定は必須です。
また、EZwebでサポートする文字コードはShift-JISです。
文字コードの指定が無い場合、Shift-JIS以外の文字コードを指定した場合には、コンテンツが正しく表示されない (文字化けする) 場合がありますのご注意ください。

404 Not Found

- 推奨してないっぽい

Softbank
- HTML,XHTML対応してるけど推奨はしていない?ただShift_JISの場合、FORMからの絵文字の送信が怪しい挙動をするのでUTF-8の方がちゃんとしてる

Content-Type

DoCoMo,Softbankは、

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で送られてくる
UTF-8対応と公表しているドコモはもちろんSoftBankも、ページの表示がUTF-8の場合はそのフォームから送られてくるクエリーも UTF-8でしたが、auはなんとページの表示がUTF-8だろうと、そのフォームに入力した文字列はSJISで送られてくることがわかりました。新旧8 機種試して全てそうだったのでauはそういう仕様なのかなと思います。

ケータイ飲食検索、au・ソフトバンク端末に対応|blog|たたみラボ

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。
JavaScriptは使わない。
これ基本です。携帯サイトっぽいという意味での基本です。
お願いします。

実践モバイルSEO講座|携帯サイトとして検索エンジンに認識させるための8つのTIPS | スマホサイト・アプリをつくろう。

これは違うっぽいです。
サイトのリニューアルの際にShift_JIS -> UTF-8をやってみたんですけど、リニューアル前後でのAU Googleの検索流入数、INDEX数共に減少することなく、いくつかの最適化も行ったことも加えて増加傾向にあります。
いくつかの最適化方もそれほど大きなことをしたわけでは無いので文字コードによるマイナスポイントは特に無いと思います。
推奨していないAUでの検索結果においても文字化けせずに正しく表示されてることも確認しました。
(Googleクローラーが勝手にやってるだけでAUはその辺関与してないとかな気が)
ちなみにYahoo Mobileは特に変化無し