• ベストアンサー

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

  • PHP
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
回答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

  • FORMからの文字入力文字化け

    「.htaccess」で設定した場合、正常に動作するのですが、「自作スクリプト内」でPHP環境を設定すると文字化けします。 フリーの掲示板が「.htaccess」で設定した場合、文字化けしますので、自作スクリプトも今回からスクリプト内部からPHP環境を設定し動作確認をしています。 FORMからの文字入力だけが文字化けしてしまうのですが、解決方法が見出せずに困っています。 また、「mbstring.encoding_translation」の設定方法がわからずに設定していないため、入力文字化けするのでしょうか。 表示だけは、文字化けせずに表示されます。FORMからの入力文字だけが文字化けします。 解決方法をご存知の方がいらっしゃいましたらご教授のほど宜しくお願いします。 # .htaccessで設定する場合 php_flag output_buffering "On" php_value output_handler "mb_output_handler" php_value default_charset "Shift_JIS" php_value mbstring.language "Japanese" php_value mbstring.internal_encoding "EUC-JP" php_value mbstring.http_input "auto" php_value mbstring.http_output "SJIS" php_value mbstring.detect_order "auto" php_flag mbstring.substitute_character "none" php_flag mbstring.encoding_translation "On" # 自作スクリプト内で設定する場合 ini_set("output_buffering", "On"); ini_set("output_handler", "mb_output_handler"); ini_set("default_charset", "Shift_JIS"); mb_language("Japanese"); mb_internal_encoding ("EUC-JP"); mb_http_input("auto"); mb_http_output("SJIS"); mb_detect_order("auto"); mb_substitute_character("none"); ob_start("mb_output_handler");

    • 締切済み
    • PHP
  • phpmyadminで文字化け

    こんにちは、 現在、php5,mysql4で構築しているのですが、 phpmyadminでテーブルに入れた日本語を見ると 文字化けを起こしており、 たぶん、default_charsetだと思うのですが、 何を設定すればよいのでしょうか? MYSQL4 UTF-8 PHP5 mbstring.detect_order auto mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input auto mbstring.http_output SJIS mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.script_encoding no value mbstring.substitute_character no value default_charset no value

    • 締切済み
    • PHP
  • サンダーバードで、全角8文字以降が、文字化け。

    いつもお世話になってます。 さて、PHPで、メールフォームを作ったのですが、 クライアントのメールソフトが、サンダーバードで、 件名の全角8文字以降が、文字化けするようです。 (Outlock等では、文字化けしません) 解決策をご存知の方がいましたら、教えて下さい。 また、環境の情報で不足がありましたら、ご連絡ください。 宜しくお願いいたします。 【環境】 サーバ WebARENA SuiteX PHP 文字コード EUC-JP http://www.arena.ne.jp/suitex/index.html 【htaccessに記載内容】 php_value mbstring.encoding_translation On php_value mbstring.internal_encoding EUC-JP php_value mbstring.http_output EUC-JP php_value mbstring.script_encoding EUC-JP

    • ベストアンサー
    • PHP
  • UTF-8で文字化け

    いつもお世話になっております。 全てのファイルをEUC-JP で作成しております。 Googleマップを使用することになり、1ページだけ UTF-8 で出力したいと思います。 php.ini の設定は以下のようになっております。 -------------------------------------------------- default_charset EUC-JP mbstring.detect_order no value mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input pass mbstring.http_output EUC-JP mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.substitute_character no value -------------------------------------------------- Googleマップを出力するページで以下のようにしたのですが 文字化けが直りません。 map.php -------------------------------------------------- ini_set("default_charset", "UTF-8"); mb_internal_encoding("UTF-8"); 他に設定する箇所はありますでしょうか。 よろしくご教示お願いいたします。 <環境> PHP:4.3.1

    • ベストアンサー
    • PHP
  • 文字化けについて

    現在PHPでの開発をおこなっています。 環境はWindows2000、Webサーバー『APACHE』、PHP『php-4.2.0-Win32』を使用しております。 Mysqlも接続でき、Web上でも表示ができるようになったのですが、文字化けを起こしてしまいます。以前カタカナの『ソ』が文字化けを起してしまったので、その時は『php.ini』ファイルの ・output_bufferring = Off ・default_charset = EUC-JP ・mbstring.http_input = auto ・mbstring.http_output = EUC_JP ・mbstring.internal_encoding = EUC_JP ・mbstring.substitute_character = none ・register_globals = On と7箇所設定を変えました。自分で作成したソースもEUCで保存してるんですけど、 文字化けが起こってしまいます。 どうしたらよろしいでしょうか? お分かりになる方がおられましたらよろしくお願い致します。

    • 締切済み
    • PHP
  • 携帯サイトで稀に文字化けしてしまいます。

    PHP+MySQLで携帯サイトを構築しています。 DBと各ファイルのエンコードはEUC-JPで、携帯対応するために 出力のみhtaccessにてSJISにしております。 また、入力フォーム等もあるためhtaccessに下記を記述したところ、 基本的には問題なく表示するのですが、更新を繰り返すと5~10回に1回ほど文字化けを起こします。 #htaccess内の記述--- php_value output_handler mb_output_handler php_value default_charset Shift_JIS php_value mbstring.language Japanese php_flag mbstring.encoding_translation 0 php_value mbstring.http_input auto php_value mbstring.http_output SJIS php_value mbstring.internal_encoding EUC-JP php_value mbstring.substitute_character none #------------------- それも、現時点で確認している状況では ・db.phpというファイル内でDBからデータを取得し、その中でdumpした場合はまったく文字化けせずSJISで表示 ・index.html内に日本語を記述しても文字化けなくSJISで表示 ・main.php内でいろいろなファイルをrequire_once等していると文字化けが発生 (具体的には日本語部分が全て???になったり空白になったりする ソースを開いてエンコードを変えても変化無し) 毎回正常だったり毎回文字化けしていれば分かるのですが、ごく稀にそういう状況が起きてしまっているので困っています。 どなたか知恵をお貸し下さい。 サーバ環境 レンタルサーバ Kagoya Internet Routing(共用) Apacheバージョン Apache/1.3.37 MySQLバージョン 5.0.33 (Ver 14.12 Distrib 5.0.33) PHPバージョン 5.2.5

    • 締切済み
    • PHP
  • php 文字化けについて

    はじめまして、phpについて質問があります。 最近、PHP入門の本を買ってphpインストールをして、成功しました。 しかし、プログラムで「Hello」など英語は表示できるんですが、「こんにちは、世界!」など日本語で表示させようすると「??????A??E?I」となって文字化けします。 いろいろと調べましたが、どのようにすればいいか分からないまま2週間過ぎました。どなたか教えてくださいお願いします。 以下設定情報です↓ XP Apache2.059 PHP5.2.1 php.ini 447:default_charset=EUC-JP 1165:mbstring.language=Japanese 1170:mbstring.internal_encoding=EUC=JP 1173:mbstring.http_input = auto 1177:mbstring.http_output = EUC-JP 1184:mbstring.encoding_translation = On 1188:mbstring.detect_order = auto 1192:mbstring.substitute_character = none;

    • ベストアンサー
    • PHP
  • 一部の文字のみ文字化けします

    phpでXMLを生成しています。 XMLをエディターで見るとほとんどの文字は正常に表示されているのですが、一部の文字だけが文字化けしています。 具体的には 究、岩、ど の三つの文字だけです。 その三つの文字はいずれも同じ文字に文字化けしています。 cを丸で囲ったコピーライトの表記に使われる文字に似ています。 上記の文字のみなにかコピーライトに引っかかっているのでしょうか。 googleで色々と調べてみましたが、他の文字での文字化けの事例はあるのですが、上記の文字での事例は見つかりませんでした。 どなたかご教示願えませんでしょうか。 phpのバージョンはPHP Version 5.3.3です。 phpのあるディレクトリと同じディレクトリにhtaccessで以下の記述を入れています。 php_value mbstring.internal_encoding UTF-8 php_value default_charset UTF-8 php_value mbstring.http_output UTF-8 php_value mbstring.language UTF-8 php_value mbstring.http_input auto php_flag mbstring.encoding_translation On php_value output_handler mb_output_handler

    • ベストアンサー
    • PHP
  • カタカナ小文字「ァ」の、検索時の文字化けで困っています。

    はじめまして。 現在、検索結果が表示されるページを制作しているのですが、その際、 カタカナ小文字の「ァ」が入っているキーワードで検索したときに、 検索キーワードの表示のところで、下記のように文字化けが起こってしまって、困っています。 (「ヴァージニティ」→「ヴ 璽献縫謄 」) Google検索しても、解決法を見つけることができませんでした。 magic_quotes_gpcの設定は、開発環境ではOff、本番環境ではOn(レンタルサーバのデフォルトの設定)にしているのですが、 if (isset($_GET['keyword'])) { $keyword = (get_magic_quotes_gpc()) ? $_GET['keyword'] : mysql_escape_string($_GET['keyword']); $keyword = mb_convert_kana($keyword, "aKV"); } のように、magic_quotes_gpcの設定が「ON」であるときと「OFF」であるときの両方の設定を記述しています。 PHP、データベース共に文字コードはEUCで統一しています。 レンタルサーバなので.htaccessを使用して、下記のように設定しています。 php_flag output_buffering off php_value default_charset EUC-JP php_value mbstring.language Japanes 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_value mbstring.substitute_character none php_value mbstring.detect_order EUC-JP,SJIS,JIS,UTF-8,ASCII 文字化けが生じる、表示部分のphpの記述ですが、 if($keyword != ""){ $keyword = mb_convert_encoding($keyword, "EUC-JP"); echo htmlspecialchars(stripslashes($keyword)); } のように記述しています。 ちなみに、「ッ」のような他のカタカナ小文字が入っているキーワードでは、正常に検索結果が表示されます。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP 入力値 文字化け

    phpでFormで入力した値(日本語)が文字化けしてしまいます。 環境は WinXp pro apache2.0.59 php 4.4.7 php.iniのおもな設定ですが、 mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; ブラウザからすべてShiftJisで入力されているのですが、 それがうまく EUC-JPに内部エンコードされていません。 mb_convert_encording($str,"EUC-JP","auto")をスクリプト内で 記述するとうまく表示されますが、なんとか設定で文字化けしないよう にできないでしょうか? よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう