- ベストアンサー
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" ------------------------------------------------- もし上記の設定に間違いなどがあれば、ご指摘いただけないでしょうか。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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 携帯の絵文字は恐らく使えません。
その他の回答 (2)
- eccschool
- ベストアンサー率40% (2/5)
php.iniの内部文字コードをEUC-JPにする。 HTMLのプログラムのメタタグ内に"charset=sjis"を記述する。 DBから取り出す際にmb_convert_encoding($txt, "SJIS", "EUC-JP"); これでよいでしょう
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
うまく動いてくれない場合は、面倒でも明示的にエンコードしなおせば確実です。 $txt = "日本語"; echo mb_convert_encoding($txt, "SJIS", "EUC-JP"); 参考まで。
お礼
回答ありがとうございます。 こちらで色々とプログラムを調べていたところ、原因がわかりました。 内部エンコーディングをEUC-JPにしているにも関わらず、 作成したPHPファイルはSJISで保存していたのが原因でした。 PHPをEUC-JPで保存後、htaccessやmbstringでの設定で正常にテキストが表示されています。