• ベストアンサー

【エンコード関係?】マルチバイト文字が『?』に

PHPファイルからMySQLにアクセスし、クエリーを表示する際に、マルチバイト文字が全て『?』に変換されてしまいます。 MySQL…というよりphpmyadmin上ではきちんと表示されていますし、mbstring系の設定も全部日本語対応のものに直したつもりですが…。 デフォルトでUTF-8とかlatin1になっていたものを全てEUC-JPに書き換えました(データベースの照合順序もeucjpms_japanese_ciになってます) 解決法に心当たりのある方いらっしゃいましたら回答願います;; 上記の情報では足りない、という場合は遠慮なくおっしゃってください。

noname#65290
noname#65290
  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • ulmo
  • ベストアンサー率43% (197/454)
回答No.2

もしくは、SET NAMES か SET CHARACTER SET ですね。 http://dev.mysql.com/doc/refman/4.1/ja/charset-connection.html

noname#65290
質問者

お礼

無事解決致しました。 charset周辺に関しては、解決はしたけれど理解はしていない状態なのでこれからも学習頑張ります。。 回答ありがとうございました。 そして補足に関係ないこと付け足してすいません…(苦笑

noname#65290
質問者

補足

実行してみましたが特に変化がなかったのでソフトウェア自体をアンインストール&インストールを繰り返してみて…(ちなみにXAMPPを使ってます) とても今更なんですが、【SHOW VARIABLES LIKE 'char%';】を実行してみました。 character_set_client ⇒ utf8 character_set_connection ⇒ eucjpms character_set_database ⇒ latin1 character_set_filesystem ⇒ binary character_set_results ⇒ utf8 character_set_server ⇒ latin1 character_set_system ⇒ utf8 character_sets_dir ⇒ D:\xampp\mysql\share\charsets\ …再インストールしたせいなのか元々なのか、滅茶苦茶ですね…。 これから自力で解決できるように調べてみようと思いますが、わかることがあれば教えていただけると嬉しいです。

その他の回答 (1)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1
noname#65290
質問者

お礼

無事解決致しました。 直接の関係はなかったものの、このコマンド(内部エンコ表示?)、あー便利だなぁと心底思わせられました。 回答ありがとうございました。

noname#65290
質問者

補足

<?php /* カレントの内部文字エンコーディングを表示 */ echo mb_internal_encoding(); ?> を実行してみましたが、『EUC-JP』と表示されました… ということは設定自体はきちんとEUCに設定されているってことでいいんですかね??

関連するQ&A

  • PHPで「~」文字が化けてしまう

    VertrigoServ にて、WindowsXPへ  Apache 2.0.63  PHP 5.2.6  MySQL 5.0.51b  SQLite 3.5.9  PhpMyAdmin 2.11.7  SQLiteManager 1.2.0  Zend Optimizer 3.3.3  をインストールしました。  その後、PhpMyAdmin で既に用意されていた test データベースに  tbl という名のテーブルを用意し、二つのフィールドを作成しました。  データベース | 照合順序 ------------------------------------------  test | sjis_japanese_ci  フィールド | 種別 | 照合順序  ----------------------------------------  name | text | sjis_bin  name2 | text | sjis_japanese_ci  この name 、name2 フィールドに「~」という文字を挿入してみたら、  データの表示で「?」と表示されてしまいました。  「あ」と挿入しても「あ」と表示されます。  どうしたら「~」と表示されるようになるのでしょうか?  因みに、PhpMyAdminのログイン後のトップページでは、  MySQL の文字セット: UTF-8 Unicode (utf8)  MySQL の接続照合順序:utf8_unicode_ci  と表示されています。  これが問題なのでしょうか?

    • ベストアンサー
    • PHP
  • phpMyAdminの接続照合順序が勝手に変わる?

    質問があります。 phpMyAdminの接続照合順序が自分でphpMyAdminから 変更した以外で変わることってありますか? 以下の環境で、あるデータベース(ex_db)がありまして そのデータベースとそれに含まれるテーブルなども全て utf8_unicode_ciという接続照合順序になっていました。 ですが、今日また見てみるとデータベースはutf8_unicode_ciの ままですが、それ以下のテーブルなどは全てeucjpms_japanese_ci に変わっていて、文字化けが発生していました。 一応サイトではちゃんと表示されているのですが、接続照合順序を utf8_unicode_ciに変更しても文字化けは直りませんでした。 ちなみにphpファイルは全てutf8で記述されています。 今日急に変わっていたので困っています。 ご回答をよろしくお願いします。 phpMyAdmin: 2.11.9.2 MySQL クライアントのバージョン: 5.0.33 サーバ: Localhost via UNIX socket MySQL の文字セット: UTF-8 Unicode (utf8) 接続照合順序:utf8_unicode_ci

  • DB内の日本語データがPHPで取得できない

    利用サーバ:さくらインターネットのレンタルサーバ 利用データベースのバージョン:MySQL 5.1 PHPのバージョン:PHP 5.2.×× PHPMyAdminに記載のMySQL の文字セット: UTF-8 Unicode (utf8) PHPMyAdminに記載のMySQL 接続の照合順序: utf8_general_ci htmlやPHPファイルを、EUC-JPからUTF-8に、全て変えたためなのかは分かりませんが、 データベースに格納されている日本語(というか全角文字?)データを、 PHPで取り出せなくなってしまいました。半角英数字のデータは取得できます。 そのためDBから取得して表示させている文字データのうち、日本語のみが表示されません。 【php.iniファイルの中身】 register_globals = "On" mbstring.language = "Japanese" mbstring.internal_encoding = "UTF-8" mbstring.encoding_translation = "On" default_charset = "UTF-8" output_buffering = "Off" mbstring.http_input = "auto" mbstring.http_output = "pass" mbstring.detect_order = "auto" mbstring.substitute_character = "none" 情報は足りますでしょうか?どなたか、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • MySQL文字コード

    DB情報をHTMLで表示する場合に、mb_convert_encoding()で指定する文字コード MySQL5.1 PHP5 HTML - shift_jis MySQL の文字セット UTF-8 Unicode (utf8) MySQL の接続照合順序: ujis_japanese_ci フィールドの照合順序 ujis_japanese_ci PHPプログラムでDB情報取得後にSJISに変換 mb_convert_encoding($String, "SJIS", "●●●"); ●●●の文字コードを何を指定すればいいのかがわかりません。 EUCを書くとうまくいってるような気もしますが、なぜEUCでうまくいく のかもわかりません。 ご教授下さい。

    • 締切済み
    • PHP
  • ACCESSとphpmyadminの文字関係に関して

    ACCESSからODBC経由でmysql へデータをインポートしました。 結果、phpmyadminで参照した時に、案の定文字化けしていました。 MySQLの文字セットは UTF_8 Unicode(utf8) MySQLの接続照合順序 utf8_general_ci で、テーブル上の各項目の照合順序は utf8_general_ci となっています。 config ファイル等を変更しなければならないかと思いますが、どのように変更すれば良いか教えて頂きたいと思います。 あるいは、そもそもACCESSからインポートする時に何か設定をしなければならない??? よろしくお願いします。

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

    phpMyAdmin - 2.11.4 php エディタ shift-jis MySQL クライアントのバージョン: 5.0.45 localhost MySQL の文字セット: UTF-8 Unicode (utf8) MySQL の接続照合順序 sjis_japanese_ci テーブル 操作 レコード数 種別 照合順序 サイズ オーバーヘッド t01ken 47 MyISAM sjis_japanese_ci 2.9 KiB - 1 テーブル 合計 47 MyISAM sjis_japanese_ci 2.9 KiB 0 バイト 上記の環境にて phpでつくってみたら、 ヘッダー部など、htmlにうめこんでいる文字は通常どうりでたのですが、 php mysqlからかえってくる値で日本語の部分が????になります。 お分かりの方いらっしゃいますか? 勉強しながらしています。 どうか助けてください。

    • ベストアンサー
    • MySQL
  • mysqlの文字化けが治せません・・・;;

    現在、MYSQL+PHPを勉強中の初心者なのですが PHPにて作成したフォームデータをレンタルサーバ上のデータベースへと入力するプログラムを作成したのですが送られた日本語データがphpmyadminで確認すると全て文字化けしてしまいます。 また、データベースのデータをブラウザ上に表示するPHPプログラムでもブラウザ上では文字化けしています。 おそらく、MYSQLの文字コードの指定がまずいとおもうのですがその指定する方法がわかりません。 サーバのOSはFREEBSDで MYSQLは4.0を使用しています。 telnetを使用して、サーバにはアクセスしています。 各charsetは変数、セッション値、グローバル値の順に client utf8 latin1 connection sjis latin1 database latin1 latin1 results utf8 latin1 server latin1 latin1 system utf8 utf8 character sets dir /usr/local/share/mysql/charsets/ /usr/local/share/mysql/charsets/ collation connection sjis_japanese_ci latin1_swedish_ci collation database latin1_swedish_ci latin1_swedish_ci collation server latin1_swedish_ci latin1_swedish_ci となっています。 この質問掲示板も確認したのですが my.cnfやmy.ini等のファイルがサーバ上に 見つからず質問させて頂いております。 どうぞ、よろしくお願い致します。

  • MySQLインサートで文字化け

    初めてXAMPPを使って、Windowsローカル上でシステムを作っているのですが、MySQLへINSERTするとどうしても文字化けを起こしてしまい困っています。(その他のHTML表示は問題ありません) 本番用のサーバーがEUC-JPなのでEUC-JPでやらなければならず、まずはMySQL等の設定ファイルを下記サイトに従ってむりくりEUC-JPに変えました。 http://phpspot.net/php/pgMySQL4.1%8CnEUC-JP%82%CC%8F%EA%8D%87.html http://cl.pocari.org/2006-06-17-1.html PHP呼び出しをして返ってくるHTTPヘッダーはいつもUTF-8のようなのでApache/conf/下のhttpd.confをいじろうと思ったのですが外部confファイルのInclude記述ばかりで該当箇所が分かりません。 環境は以下の通りです XAMPP Windows版 Version 1.6.4 Apache Version Apache/2.2.6 (Win32) php ver PHP: 5.2.4/php4互換モードにて使用 phpMyAdmin - 2.11.1 * MySQL クライアントのバージョン: 5.0.45 □phpMyAdmin上の設定 言語 - Language: 日本語-Japanese (euc) MySQL の文字セット: EUC-JP Japanese (ujis) MySQL の接続照合順序:eucjpms_japanese_ci □Apache Environment HTTP_ACCEPT_LANGUAGE ja,en-us;q=0.7,en;q=0.3 HTTP_ACCEPT_CHARSET Shift_JIS,utf-8;q=0.7,*;q=0.7 □PHPの設定 mbstring.detect_order auto mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input EUC-JP mbstring.http_output EUC-JP mbstring.internal_encoding SHIFT-JIS mbstring.language Japanese mbstring.strict_detection Off mbstring.substitute_character no value そもそも設定環境として難しいのでしょうか・・ どなたか勘所のある方宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpMyAdminでエクスポートすると、~やcmなどが文字化けします。

    phpMyAdminでMySQLのテーブルを CSVファイル形式でエクスポートして テキストエディタ(UnEditor)で開いたところ、 「shift-jis変換できない文字を含んでいます。  ?に変換します」 となりました。 ?に変換された文字は、~やcm(全角1文字でcm)などです。 どのようにしたら、文字化けしないで エクスポートできるようになるのでしょうか? 各テーブル、フィールドの照合順序はすべて utf8_general_ci に変更しましたが、 状況はかわりませんでした。 (変更前は、ujis_japanese_ciでした) レンタルサーバの為か、 my.cnfファイルは見つかりません。 ご存知の方がいましたら、教えていただけると、 助かります。m(_ _)m レンタルサーバー:さくら PHP 5.2.x PHP の文字セット:EUC-JP MySQL 5.1 MySQL の文字セット: UTF-8 Unicode (utf8) phpMyAdmin 3.1.3.1 windows XP

    • ベストアンサー
    • MySQL
  • phpmyadminのトップページのMySQL 接続照合順序の意味

    ただいまphpMyAdmin - 2.8.2.2を使っていますが、トップページに表示される「 MySQL 接続照合順序」とは何でしょうか?私の環境ではデフォルトで「utf-8_general_ci」のようになっております。 また「新規データベースを作成する」項目でも照合順序のselect項目がありますがこれは何でしょうか? ちなみに私の環境は os:windows_xp mysql:MySQL - 5.0.24-community-nt です。 よろしくお願いいたします。

    • 締切済み
    • PHP