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
によると、
らしいです。
機種判別しろってかー(汗
とりあえず 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" />
文字エンコーディングが正しく選択されないというトラブルに見舞われました。
もともと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" />
Posted by とりの からあげ at 22:57│Comments(0)
│PHP