電子書籍の厳選無料作品が豊富!

phpで、i-mode対応CSSを使用し、EUCのMySQLのデータをShift-JISで表示させたい、というものです。

.htaccess 内で、
php_flag output_buffering On
php_value output_handler mb_output_handler
php_value default_charset Shift_JIS
php_value mbstring.language Japanese
php_flag mbstring.encoding_translation On
php_value mbstring.http_input auto
php_value mbstring.http_output SJIS
php_value mbstring.internal_encoding EUC-JP
php_value mbstring.substitute_character none
php_value mbstring.script_encoding auto
という記述を入れています。
Shift-JISの***.phpで、DBの内容を正しく表示することができています。

CSSに対応させるために、phpファイル内で、
HTTP_USER_AGENT が docomoの場合のみ
header("Content-Type:application/xhtml+xml");
...
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN" "i-xhtml_4ja_10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">.....
という記述をして、CSSを使用したいのですが
上記の.htaccess を入れると、CSSは使用できても、文字化けしてしまいます。

.htaccess での文字コードの変換と
header("Content-Type:application/xhtml+xml");
を同時に使っているのが原因かと思うのですが、解決方法がわかりません。
テンプレートや関数で変換する方法しかないでしょうか。

解決方法をご存知でしたらお教えください。よろしくお願いします。

A 回答 (1件)

もう解決してるかもしれませんが、



mb_output_handler で文字コードが自動変換されるのは、
Content-Type が "text/なんちゃら" の時だけだったと思います。
5.3では text/ でなくても変換されるとか。

なので、テンプレート実装なら自前で mb_convert_encoding() するか、
ob_start('jimae_handler') で自前ハンドラを通すことで解決できるかと。

参考URL:http://phpspot.net/php/man/php/function.ob-start …
    • good
    • 0
この回答へのお礼

やはり、mb_convert_encoding()ですか....
ありがとうございました!

お礼日時:2008/11/18 12:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!