• ベストアンサー

postの引渡しで文字化け

海外の投稿ソフト(掲示板のようなもの)をダウンロードして使ってみました。 マルチバイト対応で、通常の画面(php)には日本語が表示されました。 しかし、文章を書いて、それを確認する画面に移動すると、その書いた文章のみ文字化けしてしまいます。 *テキストエリアに記入した日本語のみ文字化けしてしまいます。 対策として 1、メタタグ <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> 2、accept-charset <form method="post" accept-charset="EUC-JP" action="・・・> 3、.htaccess php_value AddDefaultCharset EUC-JP php_flag output_buffering Off php_value default_charset EUC-JP php_value mbstring.language Japanese php_flag mbstring.encoding_translation On php_value mbstring.http_input EUC-JP php_value mbstring.http_output EUC-JP php_value mbstring.internal_encoding EUC-JP php_flag mbstring.substitute_character none php_value mbstring.detect_order EUC-JP,ASCII,JIS,UTF-8,SJIS とすべて、EUC-JPにそろえましたが、文字化けしてしまいます。 文字化けの種類から察するに、EUC-JPで書いた日本語が、確認画面では、ISO-8859-1に変えられているようです。 何が原因で、どうすればいいのか教えていただけると嬉しいです。 よろしくお願いいたします。 php は4.3.11 Apacheは 1.3.34です。

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

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

何を使っていらっしゃるのかわからないのであいまいな答えになりますが・・・ PHPのheader関数で文字コードが指定されている可能性があります。 優先順位がPHP,Apache,HTMLの順になりますのでその部分を確認してください。 form要素のaccept-charsetは無視するブラウザが少なからず存在するので当てになりません。 海外のものとのことですので文字コード変換がされていない可能性が高いです。 ユーザから入力された文字列をmb_convert_encodingを通して文字コードを変換されるようにPHPを変更してください。 CJK圏(C=中国,J=日本,K=韓国)のものにしておくほうが無難だと思いますよ。

bob121
質問者

お礼

ご丁寧にありがとうございます。 PHPのheader関数やmb_convert_encodingもいじったのですがダメです。。。 色々と手を尽くしたのですが、原因が分かりません。 htmlspecialcharsが原因で特殊文字として扱われてしまうなんてことはあるのでしょうか??(検索したところなさそうですが。。) また、タイトルを記入しないとエラーが出るようにjavascriptが設定されていますが、これも文字化けの原因になる可能性はあるのでしょうか? PHPに詳しくないので、もしよろしければアドバイスいただけると嬉しいです。

その他の回答 (1)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

その海外のソフトを記述している文字コードはなんでしょうか。 ISO-8859-1でかかれている場合、EUCに直して保存すれば正常に動作する場合もあります。

bob121
質問者

お礼

ありがとうございます。 ファイルを解凍して、エディターで見てみると、全てのファイルがsjisになっています。 文字化けに関係がありそうなファイルはEUC-JPで保存しなおしましたが、文字化けは相変わらずです。 すべてEUC-JPで保存しなおしたほうがいいのでしょうか?

関連するQ&A