• ベストアンサー
  • すぐに回答を!

MySQLへの吐き出し日本語が文字化けする

自分なりに調べてみたのですが,わからないのでお尋ねいたします。 phpmyadminからmysqlに直接日本語を打ち込むと,ちゃんと日本語が表示されます(phpmyadmin内でデータを再度呼び出した時)。が,phpのプログラムからmysqlにデータをinsertし,phpmyadminでデータを参照すると日本語部分のみ文字化けします。 同じプログラムをアイルサーバで動かしていて,そこではうまくいっているのですが,ファーストサーバでうまくいきません。 ファーストサーバの文字コードはEUC-JPですが,phpもプログラムもEUCで書いています。メール送信部分のプログラムは,ちゃんと日本語が出ています。 日本語文字化けの場合に,チェックするべきところは,どういうところがありますでしょうか?。多分,phpというよりはMYSQL側の問題のような気がしないでもないのですが・・・。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数650
  • ありがとう数26

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

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

INSERT 前に以下のようにして "SET NAMES 文字コード" で MySQL に文字コードを指定してみてください。 mysql_query("SET NAMES EUC-JP"); phpMyAdmin は起動時に文字コードを指定しているのでphpMyAdminだと正常に処理されるのだとおもいます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

mysql_query("set names ujis"); これで解決しました。 もう諦めて手作業にしようかと思いながらやっていた最後のトライ&エラーでした。 皆様,ありがとうございました。

質問者からの補足

とにかく簡単なコードで確かめてみようと,下記のようなコードを暫定的に作成して確かめてみました。 -------------- $name="やまだはなこ"; //データ登録 mysql_query("set names euc-jp"); $sql = "insert into TUI_usertest(k_name) values('$name')"; -------------- が,結果はやはりk_nameが化けています。 ¤Ï¤Þ¤À¤Ê¤ª¤?¤Ã¤Á このような化け方です。 mysql_query("set names euc-jp"); の使い方がおかしいでしょうか?。

関連するQ&A

  • phpmyadminで日本語が文字化け

    お世話になります。 現在PHP&MySQLを勉強しています。 書籍に掲載のPHPプログラムを試しているのですが、日記プログラムで、書き込み→読み出しは日本語で問題なく動作していますが、phpMyAdminでデータを表示してみると日本語の部分だけ文字化けしています。 プログラムの動作には問題ないのですが、別のプログラムを試すと、データも文字化けしないことが分かりました。 できれば、phpMyAdminでも文字化けしない方が好ましいのですが、解決方法はないのでしょうか。 文字コードはutf-8で統一したいと思っています。 どなたかお解りになる方、宜しくお願い致します。

    • 締切済み
    • PHP
  • MySQL5.1の文字化け

    多くの方が同様の質問をされていたのですが、一致する問題が見つけれなかったので、ご存じの方がおられたら教えて下さいm(_ _)m (環境)  PHP 5.2.8 ZendFramework 1.5.1 から Pdo Mysqlを使用  文字コード:SJIS  Mysql 5.1  文字コード:EUC-JP (質問内容) 携帯の絵文字データをSJISのバイナリでスクリプト中に埋め込むため、スクリプトの文字コードをSJISに統一したところ、文字化けが発生しました。 SET NAMES SJIS のSQLを発行することで表示は正しくできるようなったのですが、新たにレコードを追加しようとすると文字化けが発生します。 例)情報 → 情表 insertを行う前の文字コードをSJIS,SJIS-win,EUCと変えてみましたが、SJISもしくはSJIS-winの場合は上記の例のとおりとなり、EUCにすると完全な文字化けとなりました... おそらく登録時にMYSQLがSJIS→UTF8→EUCに変換される時に正しく変換されていないものと思われるのですが、どなたか対処方法をご存じないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • MySQL接続データ表示で文字化け

    Dreamweaverを使って、MySQL接続でデータ表示を試みているのですが、日本語が文字化けしてしまいます。 phpMyAdminでデータベース表示したときは問題なく表示されます。 文字コードは,phpMyAdmin、DWともeucで設定しています。 解決するには、どのような手段が考えられますか?よろしくお願いします。 バージョン:MySQL 4.0.27

その他の回答 (2)

  • 回答No.3
  • ma2shin
  • ベストアンサー率41% (69/167)

phpmyadminのログイン時EUC-JPでログインしてないとか? phpファイル保存時SJIS形式で保存されているとか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ma2shinさん、ありがとうございます。 PHPファイルの保存はEUCになっています。 >phpmyadminのログイン時EUC-JPでログインしてないとか? これがよくわからないのですが、ログインする時にEUC-JPを選ぶような入力ボックスはないのですが・・・何か私、カンチガイしているでしょうか?。 ちなみに、phpMyAdminを開いて、左フレームのプルダウンメニューが「データベース」という状態での右フレームの状態は、以下のようになっています。 MySQL の文字セット: UTF-8 Unicode (utf8) MySQL 接続照合順序 utf8-unicode-ci また、その右に表示されているphpMyAdminに関する情報は phpMyAdmin - 2.9.0.2 言語 - Language 日本語japanese です。

  • 回答No.1
  • nyalio
  • ベストアンサー率58% (20/34)

どちらかというとPHP側の問題のような気もします。 インサートする日本語文字列にmb_detect_encodingをかけて文字コードを調べてみてはいかがでしょう。 PHPMyAdminからインサートする分には問題ないということですが、念のため確認もかねて、PHPMyAdminの参照順序がLatinなどになっていないかも確認するとよいかもです。(EUCだとujisだったかと)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 mb_detect_encodingをかけてみましたが,EUC-JPでした。 あと,参照順序については,Latin1なんとやらになっていたので,この部分も,ujisに修正して実行してみましたが,結果は変わりませんでした。 phpもmysql自体も初心者に近いので,なにか基本的なことを見落としているのかもしれません・・・。

関連するQ&A

  • phpMyAdmin内での文字化け

    サーバはさくらインターネットを利用してます。 レンタルサーバから専用サーバに移転したのですが、 専用サーバではphpMyAdminで日本語データの文字化けが起きます。 専用サーバのphpMyAdminからDB作成の際、下記の設定で行い、 MySQLの文字セット UTF-8 Unicode (utf8) MySQLの接続照合順序 utf8_unicode_ci DB の照合順序 utf8_unicode_ci レコードをINSERTする際、下記のように文字コードを指定し、 $sql=mb_convert_encoding($sql,"EUC-JP","EUC-JP"); execute_sql($con, $sql); 実行したら、phpMyAdmin内で日本語データが文字化けしました。 サイト内で表示しているDBデータ(日本語)は文字化けしませんでした。 DB の照合順序をutf8以外(ujis_japanese_ciなど)として、 DBを作った場合、レコードをINSERTしたら、サイト内のDBデータも phpMyAdmin内データもどちらも日本語が文字化けします。 また、レンタルサーバのphpMyAdminからDBデータをエクスポートして、 専用サーバのphpMyAdminからインポートした場合、 読み込むDBデータファイルの文字コードをUTF-8にしなければ、 phpMyAdmin内で日本語データが文字化けしてしまいます。 ただ、UTF-8にしてインポートしてもphpMyAdmin内では 文字化けしませんが、サイト内で表示しているDBデータは 文字化けします。 専用サーバのphpMyAdminから データを日本語の文字列に編集・更新したら、 phpMyAdmin内ではそのデータに関しては文字化けなく表示されますが、 サイト内ではそのデータは文字化けしてしまいます。 専用サーバ情報は下記の通りです。 【専用サーバ】 OS:CentOS 5 Apache 2.2.3 PHP5.1.6 DBサーバ:MySQL 5.0.77 アップしているファイルの文字コード:EUC 分かる方、ご回答、よろしくお願いいたします。

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

    WindowsServerでPHPとMySQLで作成したプログラムを動かしています。 PHPからINSERTでMySQLに登録すると環境依存文字(「(株)・(有)など)が「?」になってしまいます。 PHPからSELECTでブラウザ上に表示させると文字化けはしていませんが、phpMyAdminで確認すると「?」になっています。 このデータベースの内容を他のサーバーに移すときに、phpMyAdminからエクスポートまたはmysqldumpすると「?」のままエクスポートして、他のサーバーでインポートしても当然「?」になってしまいます。 環境依存文字が文字化けしない、あるいは他のサーバーでも環境依存文字をそのまま移行できるようにはできないでしょうか。 よろしくお願いします。 PHPはEUC-JP、データベースはujisで作成しています。 INSERTの直前でSET NAMES UJISを実行しています。

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

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

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

    PHPからMySQLを使っています。 MySQLもPHPも文字コードはutf8を使っているのですが、PHPMyAdminから入力した日本語を普通に読み出すと文字化けして「??????」になってしまいます。また、自作コードからの日本語のinsertもできません。 しかし、「set character set utf8」を先に実行しておくといずれも上手くいきます。 これは一体どういうことなのでしょうか? そもそも全てutf8で統一しているつもりなのですが、MySQLかクライアントのどちらかで他のコードが使われているということなのでしょうか? MySQLはstatusなどを見てもutf8になっているので、どちらかと言えばクライアントの方が臭うのですが、よくわかりません。 どうか知恵をおかしください。

  • ブラウザーで日本語が文字化けする(PHP+MySQL)

    以下の現象に対処したいのですが、どうすればいいか弱っています。 (1) phpMyAdminからSQLでテーブルに日本語を挿入して、 PHPプログラムでブラウザー表示すると文字化け(?????で表示)する。 phpMyAdminでこのデータを表示すると、正しく日本語表示されている。 (PHPプログラム内で直接日本語データを記述して挿入しても同じ現象となる) (2) ブラウザーで日本語を入力してPHPプログラムで受取りMySQLに出力して、 そのデータをPHPプログラムでブラウザー表示すると問題なく日本語が表示される。 phpMyAdminでこのデータを表示すると、文字化け(ぐじゃぐじゃの文字で表示)する。 利用しているホスティングサービスは、お名前・COMのVPSプラン 実行時の環境 MySQL: サーバのバージョン: 5.0.77 サーバ: Localhost via UNIX socket MySQL の文字セット: UTF-8 Unicode (utf8) MySQL の接続照合順序: utf8_unicode_ci PHP : PHP5を使用 phpプログラムは、UTF-8で記述。 出力されるHTMLの文字セット <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

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

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

    • ベストアンサー
    • MySQL
  • Fedora7+PHP+MySQLで文字化け

    すみません、表題にてPHP側でCSVファイルをINSERTで登録していますが、どうしても文字化けしてしまいます。 Fedoracore7 PHP5.2.2 MySQL5.0.37 phpMyAdmin2.11.0 <php.ini> mbstring.internal_encodein = EUC-JP mb・・・output = EUC-JP <my.cnf> [client]、[mysqldump]、[mysql]ともに default-character-set = ujis [mysqld] default-character-set = ujis skip-character-set-client-handshake init-connect = SET NAMES ujis 色々と調べてEUC-JP(ujis)で統一してるつもりなのですが・・・ phpmyadminでは文字化けは解消してまして、こちらでレコードを登録すると、PHP側では文字化けなしで表示されます。 PHP側での書き込みは、 mb_convert_encoding($val,"EUC-JP","SJIS") で行っていますが、文字化けが解消されません。 どなたかご教授頂ければと思い、質問させて頂きました。 宜しくお願いします。

    • 締切済み
    • PHP
  • wordpressがMySQLに日本語データを格納する際の文字コード

    初めまして、satsukimaと申します。 現在他のブログからの引越し作業を行うべく、wordpressのインストールを終えました。 そして別のブログサイトからのテキストデータをMySQLに流し込もうとしています。 ところが日本語の部分にのみ文字化けが発生してしまいます。 wordpressではMySQLに日本語データを格納する際、どのような文字コードを使っているのでしょうか? 以下の5点を試しました。 1.utf8の端末でMySQLのCLI(mysql client)から"insert into"コマンドを使ってデータを追加しましたが、CLIのselect文とブラウザの両方で確認したところ日本語部分で文字化けが発生します。 2.ブラウザから通常通りに管理画面より日本語の入力を行うと文字化けせずに正常にブラウザに表示されます。 3.しかし正常にブラウザに表示されるデータをCLIのselect文にて確認すると文字化けが発生します。CLI端末の文字コードをutf8、euc、shift-jis、iso-2022-jpで試しましたが、やはり「?????」といったような文字列が表示され、文字化けします。 4.MySQL Query Browserからselect文を実行すると、ブラウザ上で正しく表示されているデータは正常に表示されます。 5.自分で書いたPHPスクリプトでselectを実行しブラウザから表示させると、文字化けします。ブラウザの文字コードをutf8、euc、shift-jis、iso-2022-jpで試しましたが、文字化けします。 どなたかヒントでも頂けないでしょうか。 ぜひ宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPとMySQLで文字化けします

    <?php $con=mysql_connect("localhost","oxwar2","chono3"); $db=mysql_select_db("oxwar2",$con); $query="insert into japan(id,title,price)values(1,'絵本',1000)"; $result=mysql_query($query,$con); if($result){ print "OK"; } ?> として、実行すると上手くいきますが、phpMyadminで見ますと、日本語の部分だけが文字化けしております。 これを直すにはどうしたらよいのでしょうか。 文字コードはUTF8で作りました。色々試しても同じです。 どのようにしたらよいのでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • mysql登録時の文字化け

    PHPで作成した登録フォームで入力されたデータをmysqlに登録すると、文字化けというか?になってしまいます。すべての文字を検証したわけではないのですが、どうも環境依存文字が?になってしまうようです。環境依存文字を登録するにはどうしたらいいでしょうか? ちなみに、現在の文字コードは HTMLの<head>の部分に<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> PHP開始時に mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); ただし、PHPの設定ファイルがさわれないのでPHP使用時の内部文字コードは恐らくデフォルトのEUC mysqlの文字コードとしては、DB,テーブルともにutf8_unicode_ci ファイルの保存形式はutf-8(BOMなし) SQL文のデータ部分にmb_convert_encodingを使用 例: insert into test(test1,test2) values( mb_convert_encoding("テスト1","EUC-JP","UTF-8"), mb_convert_encoding("テスト2","EUC-JP","UTF-8")) よろしくお願いします

    • ベストアンサー
    • PHP