• ベストアンサー

htaccessでの文字コード設定について

現在[PHP4 + MySql4.0.17]を利用したWebシステムを構築しています。 携帯での閲覧にも対応するため、携帯ページの文字コードをShift_JISにしたいと思っているのですが、MySqlのデータ文字コードはEUC-JPのため、ページ表示の際に文字化けしてしまいます。 現在、携帯用ページのトップディレクトリのhtaccessにて以下の設定を記述していますが、表示される文字コードはEUC-JPのままです。 ------------------------------------------------ AddDefaultCharset SHIFT_JIS php_value mbstring.http_input "auto" php_value mbstring.http_output "SHIFT_JIS" php_value mbstring.internal_encoding "SHIFT_JIS" ------------------------------------------------- もし上記の設定に間違いなどがあれば、ご指摘いただけないでしょうか。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

htaccessは使ったことがないですが、php.iniに設定する場合には以下のようにします。というわけで、あくまで参考情報です。 ;レスポンスHTTPヘッダに Content-Type: text/html; charset=Shift_JISを出す default_charset = "SJIS" ;フォーム入力はSJIS mbstring.http_input = SJIS ;内部エンコーディングはEUC mbstring.internal_encoding = EUC-JP ;HTML出力はSJIS mbstring.http_output = SJIS ;入力変換を行なう(入力SJIS→PHP内部ではEUC) mbstring.encoding_translation = On ;出力変換を行なう(PHP内部ではEUC→出力SJIS) output_handler = mb_output_handler output_buffering = On 携帯の絵文字は恐らく使えません。

wanna
質問者

お礼

回答ありがとうございます。 こちらで色々とプログラムを調べていたところ、原因がわかりました。 内部エンコーディングをEUC-JPにしているにも関わらず、 作成したPHPファイルはSJISで保存していたのが原因でした。 PHPをEUC-JPで保存後、htaccessやmbstringでの設定で正常にテキストが表示されています。

その他の回答 (2)

回答No.3

php.iniの内部文字コードをEUC-JPにする。 HTMLのプログラムのメタタグ内に"charset=sjis"を記述する。 DBから取り出す際にmb_convert_encoding($txt, "SJIS", "EUC-JP"); これでよいでしょう

回答No.2

うまく動いてくれない場合は、面倒でも明示的にエンコードしなおせば確実です。 $txt = "日本語"; echo mb_convert_encoding($txt, "SJIS", "EUC-JP"); 参考まで。