PHPによる検索システムでの文字化けについて

このQ&Aのポイント
  • PHPによる検索システムでの文字化けについて解決策はあるのか
  • 現在、PHPによる検索システムを作成しているが、文字化けが発生している
  • 文字コードの選択に関係なく一部の文字が文字化けしている
回答を見る
  • ベストアンサー

PHPによる検索システムでの文字化けについて

PHPによる検索システムでの文字化けについて 現在、ダウンロード販売によるシェアソフトを利用し、PHPによる検索システムを作成しています。 (掲示板のようなフォームから登録するとHTMLを自動生成し、そのHTMLから一覧を自動生成、検索が行える、といったシステムです。) このソフトは作成時の文字コードをShift_JIS又はEUC-JPにユーザーが自由に選択出来るようになっているのですが、困ったことにどちらを選択しても一部の文字が文字化けを起こしてしまいます。 (Shift_JISの場合に文字化けする語句と、EUC-JPの場合に文字化けする語句は違います。) 現在のところShift_JISで作成しています。 (検索システムを導入するサイトの他のページをShift_JISに統一しているためShift_JISにしました。) ファイル構造としましては、 <form>のactionで実行されるphpファイル 登録したデータが格納されているHTMLファイル 登録したデータを流し込んで表示するテンプレート(HTMLファイル) 登録画面のテンプレート(HTMLファイル) といった形で、HTMLファイルは全てformのaction属性によりPHPファイルを実行するようになっています。 色々と検索をして調べてみましたが、PHPを介している限り、文字化けを防止するのはPHPファイルを編集するしか方法はないのでしょうか。 というのも、PHPファイルは全て暗号化されており、こちらでは編集が出来ません。 HTMLファイルは自由に編集が可能です。 こちらでもJavaScriptのreplace関数を使った置換やformにaccept-charset属性を追加するなど、色々と試してみましたが、やはり上手く行きませんでした。 ソフト制作会社には問い合わせを入れているのですが、何度問い合わせを入れても「調査中です」といってかれこれ1ヶ月以上経ちますが、解決策は打ち出されておりません。 こちらの環境はWindowsXP、IE8です。 質問内容に不備などありましたら申し訳ありません。 もし何か方法をご存知の方がいらっしゃいましたら、ご教授頂けますでしょうか。 よろしくお願い致します。

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

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

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

PHPファイルがいじれないとなると、難しいですね。 「7B」は、「{」を表現するものになるんですが、 PHPがログファイル(HTMLファイル?)に保存する際、その中括弧を削除したりとかしているのかもしれませんね。 仮に、「{{{{{{{{{{」とかフォームに入力してみたらどうなるのでしょうか。 とりあえず、その文字がすべて消されるとか、何かしらの処理が発生しているなら、 シェアウェアの開発元にその旨連絡してみてはいかがでしょう。 5C問題であれば、5C=「¥」なので、php.iniだとかPHPの設定の問題かもと思ったのですが・・・

shian_000
質問者

お礼

ご回答ありがとうございます。 7Bは「{」なんですね。 このソフトの仕様で、「{データ名}」としてフォームから送信した値をテンプレート内で呼び出しているため、この辺りが原因となっていそうですね。 「{{{{{{{{{{」と入力してみましたが、何の問題もなく表示されました。 ただ、「{文字{文字}」というように閉じカッコを付けると特殊タグとして認識されてしまうようで、何も表示されなくなりました。 特殊タグ内で7B文字を使用している以上こちらではどうにも出来そうにありませんね・・・。 これを踏まえてもう一度シェアウェアの開発元に問い合わせてみようと思います。 ご丁寧なご回答、ありがとうございました。

その他の回答 (1)

回答No.1

その、文字化けをしてしまう一部の文字がなんなのかを洗ってみてはいかがでしょう。 何らかの法則性があるのか、ないのか。 例えば有名なものですと、「―, ソ, Ы, 噂, 浬, 欺, 圭, 構, 蚕, 十, 申, 曾, 箪, 貼, 能, 表, 暴, 予, 禄, 兔, 喀, 媾, 彌, 拿, 杤, 歃, 濬, 畚, 秉, 綵, 臀, 藹, 觸, 軆, 鐔, 饅, 鷭」 などといった文字について(いわゆる5C問題というもの) 参考URL:http://wiki.livedoor.jp/n0gam0ga/d/5c%CC%E4%C2%EA など。 法則性を見つけたら上記のように一括で対処することが出来たりすると想いますが、如何でしょうか。

shian_000
質問者

お礼

返信が遅くなり申し訳ありません。 ご回答ありがとうございます。 確認出来ている文字化け語句のエンコードを調査したところ、どうやら5Cではなく「7B」で文字化けしてしまうようです。 早速調べてみたのですが、有効な解決策が見つかりませんでした。 {literal}7Bの文字列{/literal}というような方法はあったものの、フォームを介しているため、このような方法では上手く行きませんでした。 もし何か一括で対応出来る方法をご存知でしたらご教授頂けますでしょうか。 よろしくお願い致します。

関連するQ&A

  • [HTML-PHP]あるPHPファイルだけ文字化け

    お世話になります。 XP/PHP5.2.9/Apache2.2.11 の環境で、簡単なシステムを作っているのですが、その際に PHP側で header( "Content-Type: text/html;charset=shift_jis"); HTML側で <meta http-equiv="content-type" content="text/html; charset=shift_jis"> と明示的にSJISにしているのですが、実際にローカルで確認すると文字化けしてしまうPHPファイルがあります。(1ファイルのみ) 他のPHPファイルは同様のヘッダー情報を送信していますが、文字化けせずに画面出力されています。 HTML-PHP初心者のため、補足等必要になるとは思いますが、どうぞご教授下さい。

    • ベストアンサー
    • PHP
  • ApacheにてHTML・PHPファイルが文字化けします

    現在、業務の関係でHTML・PHPファイルをブラウザで表示させているのですが、あるファイル(HTML・PHP両方とも)のみ文字化けをおこしてしまうのです。 OS:TurboLinuxServer6.1 Webサーバ:Apache1.3.26 ブラウザ:Netscape4 PHP:PHP3.0.18 HTML・PHPファイルの上には「charset=Shift_JIS」と、すべてのファイルに記述しています。 PHPのiniファイル内の「i18~」もShift_JISに統一しています。 Apacheのhttpd.confの設定も行なったのですが、効果がありませんでした。 ちなみに、HTML・PHPファイルはWin→Linuxにコピーするとき、秀丸でファイル形式を「EUC(改行=lf)」で保存しました。(こうしないと、改行に変な文字がついてしまうので) gooで検索をかけたところ、ファイルのパーティションを705にかえる方法がありましたが、それも関係あるのでしょうか? なにか、よきアドバイスがあればお願いいたします。

    • ベストアンサー
    • HTML
  • 文字化けで混乱中です...

    こんにちは。PHPの文字化けで混乱しており、どなたかにご助言いただければ幸いです。 現在、PHPは拡張子「.php」、HTMLは拡張子「.html」で動いているものを 拡張子「.html」でもPHPを動作させたいので、.htaccessにて AddType "application/x-httpd-php; charset=Shift_JIS" .php .html と指定しました。 これで拡張子「.html」でもPHPが動かせるようになりましたが、それとともにPHPスクリプトの入っていない他のHTMLファイルが文字化けしてしまうようになりました。 しかし、.htaccessに AddType "application/x-httpd-php; charset=Shift_JIS" .php .html AddType "text/html; charset=Shift_JIS" .html こうしてしまうとPHPが効かなくなるし...うーん?と 多分スゴイ手前のところで混乱してきてしまいました。 HTMLファイル内ではmetaでShift-JISを設定しています。 HTMLファイル内でheaderとかやらない方法で、文字化けを回避する方法をお教えいただけますと助かります。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 文字化けの状態で上書き保存した場合、戻せますか。

    こんにちは。 HTMLファイルを文字化けした状態で 開き(EUC-JPファイルをWindowsのメモ帳で 開きました。Shift-jisで開いています)、 英文字部分を直し、そのまま、 上書き保存してしまいました。 このファイルが、ブラウザで、Shift-jisを 指定しても、Euc-jpを指定しても、 文字化けを起こします。 テキストエディッタでは、常にShift-jisで 開かれてしまい、文字化けです。 これをメモ帳以外のテキストエディッタで Euc-jpで保存しなおすと、さらに 文字化けがひどくなります。 Shift-jisで保存したファイルをEuc-jpで 開けるエディタがあればいいかも 知れませんが、こういうエディタは ありません。(もっともブラウザで、 Euc-jpで文字化けをする以上、エディッタでも 無理かもしれません)。 このように、 Euc-jpをShift-jisで開いてしまい、 そのまま、Shift-jisで保存してしまうと、 もはや、もとに戻せないのでしょうか。 (簡単に直ると思っていたのですが、 ぜんぜん直らず困っています)。 何か分かる人がいましたら、 よろしくお願いします。

  • DreamWeaverの文字化け

    DreamWeaverでHTMLファイルを開こうとすると、 HTMLファイルの文字コードによって 文字化けしてしまいます。 具体的には、EUCとシフトJISで作成されたファイルを編集しようとすると、文字化けします。 どの文字コードのファイルを開いても 文字化けしない方法はあるのでしょうか。 宜しくお願いします。

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

    PHP5 MySQL5 phpMyAdmin の3種でシステム構築を行っていました。 この度新しいPCで環境を設定した所、文字化けが起きてしまいました。 構築した以前のローカル環境と各バージョンや設定は同じはずなのですが、文字化けに悩まされています。 具体的には、MySQLはEUCでPHPはShift_JISにて構築しています。 システムの構造は、Shift_JISをMySQLに挿入する際はEUCに変換して格納しています。 文字化けは、phpMyAdminでは正常にみれるものがシステムをブラウザから確認すると日本語が全て???に文字化けしてしまっています。 そこで、phpMyAdminからDBの文字コードをlatin1にした所、今度はphpMyAdmin上で文字化けし、ブラウザ上からは正常にみえるといった状態です。 数日格闘しているのですがお手上げ状態です。 どなたかアドバイス頂ければ幸いです。

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

    登録フォームを作成し、入力した内容でDBに追加を行うなかで、PHPmyadminで実際に見てみると文字化けしています。 レンタルサーバ(OS:linux) (1)登録フォーム(shift_jis) ↓各値を渡す (2)確認ページ(shift_jis) ↓各値をmb_convert_encoding(shift_jisに変更) (3)追加 すると文字化けします。 以前、cgi-lib.plを用いてperlで書いていたものは、 文字化けしていません。 どこがおかしいのでしょうか? ちなみに (1)登録フォーム(euc-jp) ↓各値を渡す (2)確認ページ(euc-jp) ↓各値をmb_convert_encoding(euc-jpに変更) (3)追加 としても文字化けしています。 (DBだけでなく、ページ全体も)

    • ベストアンサー
    • PHP
  • PHP+MYSQLでの文字コードによる文字化け

    お世話になっております。 PHP+MYSQLの構成でDBに登録、DBから参照→表示といったアプリケーションを作っているのですが質問があります。 文字コードを意識せずに、”Shift-JIS”でPHPやhtmlのコードを書いていたのですが、仕様上問題があることに気づいたので今まで書いたソースの文字コードを”EUC-JP”に変更することになりました。 フリーで複数のテキストファイルをShift-JIS→EUCに一括変換するソフトがあるので、そのソフトを使ってEUCの文字コードに変換したところ、ソース中の日本語(全角)が文字化けしてしまいました。 #どの変換ソフトを使っても同様の結果になります ブラウザー上で表示すると問題ありませんが、今後ソースをいじるときに非常に不便です。目的としては、「ソースの文字コードをShift-JISに変換」かつ「ソース内の日本語(全角)の文字化けを起こさない」方法をご存知の方は是非ご教授お願い致します。

    • ベストアンサー
    • MySQL
  • 検索結果が文字化けします。

    検索結果が文字化けします。 ヨミサーチ(CGI)を利用しているのですが 検索結果が文字化けしてしまいます。 例)本→譛ャ <input type="hidden" name="ie" value="Shift_JIS" />をform内にいれてみましたが結果は改善されませんでした。 データはhttp://yomi.pekori.to/yomi-search.shtml そのまま使っています。 (CGI、HTML共に) 文字化けしないためにはどうしたらよいのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • PHPとMySQLの文字化け

    DBを呼び出すPHPファイルを"Shift_JIS"で作りました。 ですが、レンタルサーバーのPHP、MySQLの文字コードが"EUC-JP"との事で、 全てのファイルに読込んでいるインクルードファイルの文字コードの記述をShift_JISからEUC-JPに変更しました。 ですが、DBから呼び出してるデータは文字化けしないのですが、その他がすべて文字化けしてしまい、JavaScriptも動かない状態です。 各phpのファイルは、最後に$body で書き出す記述をしているので、 $body = mb_convert_encoding($body,"SJIS","EUC-JP"); print $body; と実行してみてもだめでした。 どうか教えて下さい。よろしくお願い致します。 ---共通インクルードファイル---- 省略 //MySQL読み込み時の文字コードを設定 mysql_query("set names EUC-JP"); //データベースを選択します mysql_select_db($DBNAME,$db); function htmlheader($pagetitle) { //各ページのヘッダ部のHTMLを組み立てる $strret = "<DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> <HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=EUC-JP'> <META http-equiv='Content-Style-Type' content='text/css'> <TITLE>$pagetitle </TITLE> </HEAD> <body border='0' cellpadding='0' cellspacing='0' width='100%'> <br>"; return $strret; } function htmlfooter() { //各ページのフッタ部のHTMLを組み立てる $strret = "<br> </BODY> </HTML>"; return $strret; } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう