あなたの習慣について教えてください!!

現在[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"
-------------------------------------------------
もし上記の設定に間違いなどがあれば、ご指摘いただけないでしょうか。
宜しくお願い致します。

A 回答 (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

携帯の絵文字は恐らく使えません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
こちらで色々とプログラムを調べていたところ、原因がわかりました。

内部エンコーディングをEUC-JPにしているにも関わらず、
作成したPHPファイルはSJISで保存していたのが原因でした。

PHPをEUC-JPで保存後、htaccessやmbstringでの設定で正常にテキストが表示されています。

お礼日時:2006/12/04 20:04

php.iniの内部文字コードをEUC-JPにする。


HTMLのプログラムのメタタグ内に"charset=sjis"を記述する。
DBから取り出す際にmb_convert_encoding($txt, "SJIS", "EUC-JP");
これでよいでしょう
    • good
    • 0

うまく動いてくれない場合は、面倒でも明示的にエンコードしなおせば確実です。



$txt = "日本語";
echo mb_convert_encoding($txt, "SJIS", "EUC-JP");

参考まで。
    • good
    • 0

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


おすすめ情報