Quantcast
Channel: html/xhtml - gifnksmの雑多なメモ
Viewing all articles
Browse latest Browse all 2

auの携帯でapplication/xhtml+xml; charset=utf-8なサイトを見ると問答無用で文字化けする

$
0
0

ちょっとはまったのでメモ。ググっても同じような症状は見つからなかった。
手元の携帯(W51H)のezwebのブラウザはapplication/xhtml+xmlな文章の文字コードShift_JISとしか認識してくれないようだ。HTMLヘッダの方で文字コードを指定しても文字化けをした。

<?xml version="1.0" encoding="utf-8"?>

こんな感じにxml宣言で文字コードを指定していても文字化けをしていた。metaタグが無いのがいけないのかと思い,

<metahttp-equiv="Content-Type"content="text/html; charset=utf-8" />

てな感じで文字コードを指定しても駄目。
結局.htaccessの方をいじって解決。

AddType "text/html; charset=utf-8" .html

RewriteEngine on
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteCond %{HTTP_USER_AGENT} !^KDDI
RewriteCond %{HTTP_USER_AGENT} !^Up.Browser
RewriteCond %{LA-F:REQUEST_FILENAME} \.html
RewriteRule .* - "[T=application/xhtml+xml; charset=utf-8]"

UAからKDDIの携帯電話だと判断される時はtext/htmlを返してやるようにした。こうすると文字化けが無くなった。条件分岐の指定に関しては404 Not Foundを参照した。
UA偽装とかいろいろ考えられるけどとりあえずは対策が面倒なので放置。
PCサイトビューアの方はOperaなだけあって,何もせずとも文字化けせずきちんと表示できていた。
それにしてもMIME Typeを指定すると文字コードが勝手に決められてしまうというのは謎仕様。utf-8に対応してないならapplication/xhtml+xml対応を名乗るなよな―とは思った。他のキャリアのブラウザはどうなんでしょうか。
とりあえず

  • XHTML1.1でウェブサイトを公開していて
  • Another HTML-lintの警告やW3Cの勧告には素直に従って
  • PC向けのXHTMLを特別な処理をすることなく携帯電話でそのまま見れるようにしたいなと思っている

なんて人は要注意。そんな人はなかなか居ないと思うけどw


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596344.js" async> </script>