こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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です。

投稿日時 - 2007-05-19 03:26:46

QNo.3011892

すぐに回答ほしいです

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

何を使っていらっしゃるのかわからないのであいまいな答えになりますが・・・
PHPのheader関数で文字コードが指定されている可能性があります。
優先順位がPHP,Apache,HTMLの順になりますのでその部分を確認してください。

form要素のaccept-charsetは無視するブラウザが少なからず存在するので当てになりません。
海外のものとのことですので文字コード変換がされていない可能性が高いです。
ユーザから入力された文字列をmb_convert_encodingを通して文字コードを変換されるようにPHPを変更してください。

CJK圏(C=中国,J=日本,K=韓国)のものにしておくほうが無難だと思いますよ。

投稿日時 - 2007-05-19 08:32:29

お礼

ご丁寧にありがとうございます。
PHPのheader関数やmb_convert_encodingもいじったのですがダメです。。。
色々と手を尽くしたのですが、原因が分かりません。

htmlspecialcharsが原因で特殊文字として扱われてしまうなんてことはあるのでしょうか??(検索したところなさそうですが。。)
また、タイトルを記入しないとエラーが出るようにjavascriptが設定されていますが、これも文字化けの原因になる可能性はあるのでしょうか?

PHPに詳しくないので、もしよろしければアドバイスいただけると嬉しいです。

投稿日時 - 2007-05-20 14:17:21

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2007-05-19 10:07:46

お礼

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

投稿日時 - 2007-05-20 14:21:13

あなたにオススメの質問