- ベストアンサー
PHPです。日本語はどのようにしたらつかえるのでしょうか
英語では期待通り動くのですが、日本語では期待通り動きません。 なぜですか。 form.html <html> <head>フォーム</head> <body> <form action="henkan.php" method="post"> 文章<input type="text" name="UKETORI"><br> <input type="submit" value="送信"><br> </form> </body> </html> henkan.php <html> <body> <?php $uketori=$_POST['UKETORI']; $uketori=str_replace("です。","だよん。", $uketori); print "$uketori"; ?> </body> </html> 日本語を変換したい場合はエンコードとか必要なのでしょうか。 やり方がわかりません。宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
むむ。 php.iniの設定を同じにして私の手元の環境でやってみたところ、上手くいきますね。 PHP4、PHP5共に試しました。 送られてくるPOSTデータが実はSJISで無いとかかな? POSTデータにmb_convert_encodingとか掛けてみてはどうでしょう? =====試験コード <?php // ttp://***.jp/test.php?str=%22%83e%83X%83g%82%C5%82%B7%81B%82%D9%82%B0%22 // で、アクセス。 // URLエンコード部分は「テストです。ほげ」 $str = $_GET['str']; echo "str_replace: " . str_replace("です。","だよん。", $str) . "<br>\n"; echo "<br>\n"; echo "mb_ereg_replace: " . mb_ereg_replace("です。","だよん。", $str) . "<br>\n"; echo "<br>\n"; ?> ===== =====試験結果 str_replace: テストだよん。ほげ mb_ereg_replace: テストだよん。ほげ =====
その他の回答 (3)
- hrm_mmm
- ベストアンサー率63% (292/459)
>mbstring.internal_encoding = EUC-JP としているのですから、ソースファイルはeucで保存して下さいね。 でないとソース内記述文字列と、入力から得た文字列とを一致させることは出来ません。 >文字コードはシフトJISだと思います。エクリプスで作っております。 eclipseなら、ソース保存時の文字コードを選べるはずですけど。 >;mbstring.func_overload = 0 コメントを外してないので default 0 だったはず、つまりmb_関数が使えるようになってないと思う。 phpinfo()ではどのようになってますか?
- asuncion
- ベストアンサー率33% (2127/6289)
> 期待通り動きません。 どんな風になってしまうのでしょうか。 php.iniの[mbstring]セクションの設定内容を全部教えてください。 また、form.htmlとhenkan.phpの文字コードも教えてください。
- Tasuke22
- ベストアンサー率33% (1799/5383)
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> とか入れてみたら如何でしょうか。
お礼
ありがとうございます。 文字が変換されずにそのまま表示されてしまいます。 です。という文字を入れたら変換されて だよん。 と表示させたいのですがそのまま です。 と表示されます。 英語だとちゃんと変換されました。 php.ini の内部です。 [mbstring] ; language for internal character representation. mbstring.language = Japanese ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) mbstring.internal_encoding = EUC-JP ; http input encoding. mbstring.http_input = auto ; http output encoding. mb_output_handler must be ; registered as output buffer to function mbstring.http_output = SJIS ; enable automatic encoding translation according to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. mbstring.encoding_translation = On ; automatic encoding detection order. ; auto means mbstring.detect_order = auto ; substitute_character used when character cannot be converted ; one from another mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions ;mbstring.func_overload = 0 文字コードはシフトJISだと思います。エクリプスで作っております。 宜しくお願い致します。 文字化けはしません。