2010年12月21日

xhtmlなモバイルサイトで文字化け

xhtmlなモバイルサイトを構築したところ、なぜか
文字エンコーディングが正しく選択されないというトラブルに見舞われました。

もともとEUC-JPで構築していたんですけど、
モバイルサイトだけShift-JISで作ったわけです。


ローカル環境では問題なく動いていたんですが、
lolipopのサーバーに上げると文字化けしてる・・・。

あれっと思って文字エンコーディングを確認してみたら
EUC-JPが選択されている。
手動でShift-JISに変更すると正しく表示されるんだけど、
自動判別させるとやっぱりEUC-JPが選択されてしまう。

同じファイルの拡張子を.htmlにしておくとちゃんとShift-JISが自動選択されるのに
.phpにするとEUC-JPが選択されちゃうという謎な現象に。


php.iniは、もともとあるEUC-JPのページに影響が出たら嫌なので変更したくない。
.htaccessファイルで制御しようかと思ったら500エラーが出る。
phpのmb関数で適当に初期エンコーディングの設定をしても直らない。


で、下記のおまじないを書いてみたところ

header ("Content-Type: xhtml+xml; charset=SJIS") ;

表示できました!!


こんな感じ。


//S-JISで表示するためのおまじない
header ("Content-Type: xhtml+xml; charset=SJIS") ;
?>
<?php echo '<?xml version="1.0" encoding="Shift_JIS"?>'."\n"; ?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />





やれやれ良かった。。。


と、思ったら、

なんかPCとdocomoでは表示できるけど
auでは「リクエストされたページは表示できません」とか表示されてる。

おまじないの部分を

header ("Content-Type: text/html; charset=SJIS") ;

に書き換えたらauでも表示できるようになりました。




『[モバイル]3キャリアに対応した正しいContent-Typeとは? 』
http://jivlog.blog98.fc2.com/blog-entry-26.html

によると、
●i-mode ※FOMA 2051/2102V以降のみ
application/xhtml+xml charset=Shift_JIS

●ezweb
text/html; charset=Shift_JIS

●softbank
text/html; charset=Shift_JIS

らしいです。
機種判別しろってかー(汗


とりあえず text/html; でdocomoも表示されてるので、これで暫く様子見します。。。

2010/12/22

ドコモでやっぱりダメでした。CSSが認識されないという。
やっぱり機種判別いるようです。

『携帯サイト docomoのみxmlを出力 php header()』
http://spice-space.net/2010/02/03/%E6%90%BA%E5%B8%AF%E3%82%B5%E3%82%A4%E3%83%88-docomo%E3%81%AE%E3%81%BFxml%E3%82%92%E5%87%BA%E5%8A%9B-php-header/





//S-JISで表示するためのおまじない
if(preg_match("/^DoCoMo/i", $_SERVER['HTTP_USER_AGENT'])){
    header ("Content-Type: application/xhtml+xml; charset=Shift_JIS") ;
}else {
    header ("Content-Type: text/html; charset=SJIS") ;//その他キャリア&PC
}
?>
<?php echo '<?xml version="1.0" encoding="Shift_JIS"?>'."\n"; ?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />






タグ :HTMLXHTML


同じカテゴリー(PHP)の記事
 SSHでディレクトリのファイル一覧を取得 (2011-02-18 21:10)
 いわゆる半角カナの文字化けについて (2010-11-24 17:12)
 PHPスクリプト終了時に実行する (2010-10-06 19:30)
Posted by とりの からあげ at 22:57│Comments(0)PHP
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。