• ベストアンサー

ブログサイト(EUC-JP)→検索サイト(UTF-8)の文字化け処理について

お世話になっております。topaz_37と申します。 素人ですので、初歩的な質問で恐縮ですが、 「文字化け」についてお答えいただけると、大変ありがたいです。 ----------------------- システムの流れ ----------------------- ●HTMLサイトに「入力フォームのタグ」を貼ります。 ●その入力フォームに、キーワードを入れると、サーバーの商品が検索されます。 ●「_blank」で立ち上げたPHPサイトに商品検索の結果が現れます。 ●現在、HTMLサイトも、PHPサイトも、文字コードを「UTF-8」で共通にしているため、きちんと動いています。 ----------------------- 問題点 ----------------------- ●この「入力フォームのタグ」を、一般のブログサイトに貼りたいと思っています。 ●しかしブログサイトの文字コードは「EUC-JP」です。 ●商品検索のPHPサイトの文字コードは「UTF-8」のままです。 ●そのためブログサイトで文字入力しても、文字化けしてしまい、商品が検索されません。 ----------------------- お願い ----------------------- ●当然ですが、ブログサイトに対しては、私は何もできません。 ●ただしブログサイトに置く「入力フォームのタグ」には何らかの記述をプラスしても動くと思います。 ●商品検索のPHPサイトには、私の方で手が加えられます。 ●上記のような条件で、具体的に「どこに」「何を」記述すればよろしいのでしょうか。 ●素人なので、あまり応用は利かないため、教えていただいたことを、そのまま丸写しする能力しかありません。 以上、大変お手数ですが、よろしくお願い申し上げます。

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

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

  • ベストアンサー
  • tom951
  • ベストアンサー率30% (29/96)
回答No.1

>●上記のような条件で、具体的に「どこに」「何を」記述すればよろしいのでしょうか。 >●素人なので、あまり応用は利かないため、教えていただいたことを、そのまま丸写しする能力しかありません。 でしたらシステムのソースをすべて書いてください。 ついでに仕様書も一緒に 処理的には文字コードを変換する処理を付ければいい。

topaz_37
質問者

お礼

お世話になっております。topaz_37でございます。 お礼が遅くなって申し訳ございません。 ご回答をいただき、ありがとうございました。 私が素人で、的確な質問ができず、申し訳ありませんでした。 しかしながら、この場にソースを記述するのも憚られますし、 文字数も超えてしまいそうなので、補足できず、重ね重ね申し訳ありません。 今回は、私の質問が不的確だったということで、 この質問を締めさせていただきます。 もう少し的確な質問ができるようになりましたら、 再度、投稿したいと存じます。 今後ともよろしくお願い申し上げます。

その他の回答 (1)

回答No.2

HTMLのFORM要素にaccept-charset属性というものがあります。もしPHP側の$_SERVERで、これを検出することができたなら、問題は解決するのかな、と思います。 EUC-JPのブログに埋め込むタグのFORM要素で、accept-charset="EUC-JP"を設定。PHPのスクリプトで、$_SERVER['HTTP_ACCEPT_CHARSET']でEUC-JPを検出したときのみ、iconv()関数でUTF-8にエンコード変更して検索という処理にすればどうでしょう? mbstringディレクティブをいじって自動変換する方法もあります。 ディレクティブを設定することに抵抗があるなぁ、mb_http_input()でEUC-JPを検出したときのみiconv()関数を実行するという処理も考えられます。 文字コード関係はブラウザの実装がまちまちなこともあって、これといった解決策はないようですので、PHPとHTMlを組み合わせて解決してみるのがよいでしょう。いろいろお試しください。

topaz_37
質問者

お礼

お世話になっております。topaz_37でございます。 お礼が遅くなって申し訳ございません。 大変ご丁寧なご回答をいただき、ありがとうございました。 ご教示いただいた方法を、色々と試させていただきたいと思います。 また今回は、私の質問が不的確だったということで、 この質問を締めさせていただきます。 もう少し的確な質問ができるようになりましたら、 再度、投稿したいと存じます。 今後ともよろしくお願い申し上げます。

関連するQ&A

  • MySQL4.0 UTF-8 での文字化け

    こんにちは MySQL4.0 & PHP4.3 でHTMLは文字コードUTF-8で記述しています。 MySQL4.0の文字コード設定はレンタルサーバーのため不明ですが、 phpMyAdminで、utf-8にてデータを入力しました。 select文でMySQLのデータを拾ってくると文字化けはおきないのですが PHP経由でPOSTされた値を使ってinsertやupdateをかけると文字化けしてしまいます。phpMyAdmin上でも文字化けしていますが、phpMyAdminをEUC-JPにすると、入力した文字が文字化けせずに表示されます。 (が、すでに入っているデータは文字化けします、、、、) 入力画面は metaでUTF-8宣言をしており、ブラウザ(IE)上でエンコードを確認するとUnicode(UTF-8)になっています。4.1みたいにset names を指定するとうまくいくかな?と思ったのですが、やっぱり4.0なので結果は変わらず、でした。PHPのスクリプトそのものは、UTF-8で記述しているのですが、、、、 どういった項目をみなおせばいいのでしょうか?

    • ベストアンサー
    • MySQL
  • フォーム検索先の文字コードが自動的にEUC-JPに

    タイトルの通りですが、フォーム検索先の文字コードが自動的にEUC-JPになってしまって困っています。 最終的には、フォームの検索先をUTF-8の文字コードを指定して開きたいです。 UTF-8でphpファイルを作成しました。内容は下記のものです。 (おそらくphpは問題ないと思いますが、一応リンクを載せます) 2つの検索フォームのリーベンシュタイン距離を求める http://okwave.jp/qa/q7398842.html 上記のPHPにアクセスするように、FC2ブログのプラグイン(HTML編集にて)で、下記のようにフォームアクション先を設置しています。 (仮にここでは2つの検索フォームに名前を入れるものとします) <form name="formleven" method="post" form action = "http://〇〇.〇〇.jp/php/formleven.php" target="_blank" style="margin:0;padding:0;" onsubmit="return false;" accept-charset="utf-8"> 名前1:<input type="text" name="nm"> と 名前2:<input type="text" name="nm2">    <input type="submit" name="exec" value="検索" onclick="document.charset='utf-8'; document.formleven.submit();" /> </form> 仮に 名前1に「あō å 1g」 名前2に「いš ë ā 」 と入力します。(日本語、アクセント文字、ローマ字などの混合文字でも対応できるように) 本来ならば、『(名前1)と(名前2)は◯%マッチ』と表示されるはずなのですが、 これで検索すると、検索先の別ウィンドウが自動的にEUC-JPの文字コードで読み込まれてしまい、下記のように文字化けします。 ��� 奪 鐚�鐔� �� ��邸 谷 � �� 1鐚� ������(6) ブラウザの文字コードを「UTF-8」に戻すと下記のように正常に表示されます。 あō å 1g と いš ë ā は 1% マッチ(6) ちなみにローカルサーバーや有料サーバーで実験した際には、勝手にEUC-JPの文字コードが出力先になったりはしませんでした。(もちろんPHPはUTF-8で作成し、EUC-JPは使っていません。) またフォームの「accept-charset="utf-8"」の部分を抜くと、検索フォームの入力文字は正常に表示される(出力先が勝手にEUC-JPにされるため)のですが、「と」「は」「%マッチ」のUTF-8で書かれたPHPファイルの文字列が文字化けします。 どうやらFC2自体がEUC-JPなようで、FC2のプラグイン(HTML編集)経由でなってしまうようです。 そこでFC2のテンプレートの冒頭のメタ部分を <?xml version="1.0" encoding="EUC-JP"?> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> ↓ <?xml version="1.0" encoding="UTF-8"?> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> と書き換えてもみたのですが、やはり結果は同じように勝手に検索出力先がEUC-JPにされてしまいます。 HTMLフォームのmethod="post"の部分をmethod="get"に書き換えると、出力先は問題なくUTF-8で表示され文字化けは起こらなくなりますが、検索フォームに入力した文字列のリーベンシュタイン距離の計算ができなくなります。数値が全て「0」になってしまいます。 (おそらく出力先はUTF-8なのですが、入力文字がEUC-JPになって文字化けして、PHPへと受け渡されるので計算できないのだと思います。) これらのことから察するに、FC2プラグイン(HTML)に設置した検索フォームの方(あるいはテンプレート?)に問題があると思うのですが、 <form name="formleven" method="post" form action = "http://〇〇.〇〇.jp/php/formleven.php" target="_blank" style="margin:0;padding:0;" onsubmit="return false;" accept-charset="utf-8"> 名前1:<input type="text" name="nm"> と 名前2:<input type="text" name="nm2">    <input type="submit" name="exec" value="検索" onclick="document.charset='utf-8'; document.formleven.submit();" /> </form> これをどう修正すればいいでしょうか? 稚拙ながら恐縮ですが、ご存じの方がいらっしゃいましたら、ご指摘・ご教授のほどよろしくお願い申し上げます。

    • ベストアンサー
    • HTML
  • 標準入力からのutf-8→euc-jpで一部文字化け

    これまでeuc-jpで作られていたHTMLフォームページをutf-8に変更したところ、フォームメールCGIの文字列処理で「~」「-」「 」(半角スペース)など一部の文字が文字化けするようになってしまいました。 Jcode.pm → Encodeに変更してみても症状は変わりませんでした。 Encodeは初めて使うのですが、過去ログを見てもよく分かりません・・・ どうぞお力添えをお願いします。 (1)下記のperlの記述方法で間違っている箇所はありますか? (2)正しく出力できる方法がありましたら、教えてください。 (3)http://oshiete1.goo.ne.jp/kotaeru.php3?q=1540626 で話されている、右側の折れ曲がった「~」はどうやって入力するのでしょうか? (3)perl側もutf-8で記述すれば、文字化けなど発生せずに処理出来るものなのでしょうか? ↓perl5.8 文字コードeuc-jp #!/usr/bin/perl use Encode;#### if ($ENV{'CONTENT_TYPE'} =~ /application\/x-www-form-urlencoded/i) { binmode(STDIN); read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); @data_s = split(/&/,$buffer); foreach $buffer (@data_s) { ($key,$value) = split(/=/,$buffer); $value =~ tr/+/ /; $value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C",hex($1))/eg; $value = encode("euc-jp", $value);#### print "$key = $value\n"; } }

    • ベストアンサー
    • Perl
  • UTF-8のサイトがWillcomのみで文字化け

    携帯をメインターゲットにしたサイトを作っていますが、Willcomのみで文字化けが発生します。 色々調べると、WillcomはShift_JISにしか対応していないとか、いや、UTF-8にも対応しているとか、メールに関しての記述はあるのですが、Webサイトに関しては文字化けしています。 ちなみに、ヘッダーは以下のように記述しています。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=utf8"> <title>*****</title> </head> また、メールに関してはUTF-8はきれいに表示されています。

  • euc-jpからutf-8の文字コード変換について

    現在、何らかのhtmlを取得する際にはurf-8で統一しようと思っているのですが、 たとえば <?php $f=file_get_contents("http://blog.livedoor.jp/dqnplus/")//文字コードEUC-JP; $f = mb_convert_encoding($f,"utf-8","eucjp-win,utf-8,sjis-win,EUC-JP"); echo $f; ?> では、EUC-JPからの変換がうまくいきません。 ……というより、EUC-JPのエンコーディングのみ失敗してしまいます。 (文字化けしたもののみ抽出すると、すべてEUC-JPでした) どのようなコードを書けば、正常にエンコードできるでしょうか。 どなたかご教示のほど、どうかよろしくお願いいたします。

    • 締切済み
    • PHP
  • mysql utf8、php・euc-jp で出力すると、[~]が文字化けする

    タイトルの通りです。 mysqlの文字コードはutf8なのですが、phpはeucで出力しています。 DBに格納されている文字は文字化けせずに、きちんと表示されているのですが、出力すると「~」が「?」に化けて表示されてしまいます。 mysql_query(”SETNAMES ujis″); や mb_language("Japanese"); mb_internal_encoding("EUC-JP"); mb_http_input("auto"); mb_http_output("EUC-JP"); 等も記述しておりますが、どうしても化けてしまいます。 回避方法等ご存知の方がおられましたら、ご教授お願いいたします。

    • ベストアンサー
    • PHP
  • javaでEUC-JP文字列→UTF-8への変換

    DB内にEUC-JPで保存されているデータを取得して、これをUTF-8文字列として扱いたいです。 phpでいうところの$string = mb_convert_encoding($string, "UTF-8", "EUC-JP"); をjavaで実現したいです。 どのように記述すれば変換できるのでしょうか? 検索しても、数十行もコードを書いて実現しているものばかりで、 シンプルな方法が見つかりません。 javaには難しい処理なのでしょうか…

  • phpMyadminに直接入力したら文字化け

    案の定、??????になってしまいました。 PHPで作ったフォームから入力した文字ではなく、phpMyAdiminから 直接入力したら文字化けしました。 おそらく入力モードがSHIFT-JISなんだと思います。 でも、それを変更できるモードがあるのでしょうか? 初期画面の文字コードは「utf8-unicode-ci」としています。 今回はutf8でPHPプログラムするつもりです。 それらしいunicode-ciを選択しました。 直接入力して、 どうすれば文字化けしないで解決できるでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • UTF-8だと文字化けしてします。

    UTF-8だと文字化けしてします。 phpを利用しています。 UTF-8でphp.iniを設定したのですがphpを表示させると文字化けしてしまいます。 エンコードで日本語選択をすると普通に表記されるのですが・・・。 HTMLだと問題はありません。 これをUTF-8の状態で表示させることは出来ますでしょうか? 初心者ゆえ、ご教授願えれば幸いです。 下記サイトになります。 http://irisdesign.main.jp/office/

  • ajax 文字化け euc-jp

    先程質問したものです データベースから取り出したときに文字化けだと思ったら プレーンテキストでも文字化けしてました。 どうやら原因はajaxを使ってテキストを(DBのデータはhtmlタグと共に返しています)返しているからのようです。 staticなtextの場合、eucではIEもFFも(サファリも)ajaxを使うと 文字化けをするらしいです。 utf-8ならIEとFFで使えるようですが、DBの都合上eucのまま 作りたいです。 どうにか文字化けを回避する方法はありませんか??

    • ベストアンサー
    • PHP

専門家に質問してみよう