携帯サイトでXHTMLを使う
2010.01.28
携帯サイトの制作にXHTMLを使ったのですが(cssを使うため)、
MTで書き出していたので文字コードはUTF-8でした。
あまりない状況かもしれませんが、そのときに躓いたところを
メモしておこうと思います。

※ちなみに頼りの綱だったMT-I18NプラグインはMT5未対応でした。。
※2010.5.20 追記
I18NHelperというプラグインなら動くとの情報を頂きました。
タグを書くときは文字コード指定の大文字/小文字に注意です!



XHTMLを使うのにまず問題となるのがDoCoMo端末です。
XHTML対応機種でも、そのままでは使うことができません。

○XML宣言とDOCTYPE宣言が必要

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTDXHTML Mobile 1.0//EN" 
"http://www.wapforum.org/DTD/xhtml-mobile10.dtd">

HTMLの最初に上のような宣言を書きます。DOCTYPEはDoCoMoに合わせておけば他キャリアでも大丈夫です。

○.htaccessでAddTypeを指定

AddType application/xhtml+xml .html

.html形式のままXHTMLとして動作させるために、.htaccessに上の1行を書きます。

さて、これでとりあえずXHTMLが使えるようになるのですが・・
今度はauで問題が出てきました。
バリバリ文字化けしてます。

どうやら、auのうちKDDIの端末で
・application/xhtml+xml
・UTF-8
のサイトを表示すると文字化けしてしまうらしいのです。

auの携帯でapplication/xhtml+xml; charset=utf-8なサイトを見ると問答無用で文字化けする
こちらの記事を大いに参考にさせていただきました

先ほどの.htaccessに追記して、条件分けします。

AddType application/xhtml+xml .html

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} KDDI [OR]
RewriteCond %{HTTP_USER_AGENT} UP\.Browser
RewriteCond %{LA-F:REQUEST_FILENAME} \.html
RewriteRule .* - "[T=text/html; charset=utf-8]"

KDDI端末の場合はtext/html、それ以外はapplication/xhtml+xmlで表示させるようにします。

これでKDDI端末でも無事に表示できるようになりました。

コメント(6)

はじめまして。とてもためになるサイトで、よく拝見しております。

文字コードの件ですが、
I18NHelperというプラグインなら、MT5でも動きました。
使い方は同じで、下記のもので囲みます。


  :
  :


ここでの大文字・小文字が区別されるのか
私は、携帯サイトのエンコードをShift_JISと記述していたため、

と書いたのでは動きませんでしたが、

で無事に変換されました。

 

誤って、タグをそのまま書き込んでしまい、
下記を修正として書かせていただきます。

--

はじめまして。とてもためになるサイトで、よく拝見しております。

文字コードの件ですが、
I18NHelperというプラグインなら、MT5でも動きました。
使い方は同じで、下記のもので囲みます。

<MTEncodeText from="utf-8" to="Shift_JIS">
  :
  :
</MTEncodeText>

ここでの大文字・小文字が区別されるのか
私は、携帯サイトのエンコードをShift_JISと記述していたため、
<MTEncodeText from="utf-8" to="shift_jis">
と書いたのでは動きませんでしたが、
<MTEncodeText from="utf-8" to="Shift_JIS">
で無事に変換されました。

 

むぎちゃさん、はじめまして。
コメントありがとうございます。

>I18NHelperというプラグインなら、MT5でも動きました
なんと。。I18NHelperプラグインも当時試してみたのですが、そういう事情があったのですか・・。
ご報告、ありがとうございます!
これで次回からはスムーズに実装できそうです。

 

ページを拝見させていただきました。

I18NHelper で指定の方法で試しましたが、アーカイブページのみ文字化けが解消されません。

I18NHelper で解決された方は、アーカイブページも解決しました?

 

度々すみません。
私はMTOS5を使用しています。
MT5なら可能なのでしょうか?

 

>I18NHelperというプラグインなら、MT5でも動きました

試させてさせていただきました…。

<MTEncodeText from="utf-8" to="shift_jis">
という記述では文字化けで、
<MTEncodeText from="utf-8" to="Shift_JIS">
という記述に書き変えても文字化けでしたが、
どういう訳か
<MTEncodeText from="utf-8" to="Shift-JIS">
アンダーバーをハイフンに変えたら文字化けが解消されました。そういうこともあるんですね。

 



月別アーカイブ