• 締切済み

文字コードを揃えているはずなのに文字化け?

プログラム初心者です。 PhpMyAdminでテーブルを作ってそこに接続するスクリプトを書くと 結果の日本語が文字化けしてしまい困っています。 SQLのコマンドラインツールからshow variables like 'char%'; で現在の文字コードに関する設定を確認してみたら +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\xampp\mysql\share\charsets\ | +--------------------------+--------------------------------+ 以上の様にcharacter_set_filesystem以外はUTF-8になっているのですが なぜ文字化けしてしますのでしょうか? このcharacter_set_filesystemをUTF-8にしないとそうなってしまうものなのでしょうか。 スクリプトはTerapadを使用しUTF-8で保存しています。 手持ちのPHPの参考書によると、文字化けの発生には以下の5箇所があるといいます。 1、HTTPリクエスト 2、PHPファイル内での文字列読み込み 3、DBアクセス 4、MysqlからApacheの問い合わせに対するレスポンス 5、HTTPレスポンス 現在この5つのうちのどこに原因があって文字化けしているのでしょうか? 3のDBアクセス時かな?と思って 参考書に従ってphp.iniや.htaccessを設定したつもりですが解消しません。 環境設定だけで一日仕事になってしまいました(汗) お詳しい方、どうかお知恵をお貸し下さい。 原因と対策を教えて下さると助かります。 情報の過不足があればご指摘ください、よろしくお願いいたします。 当方の環境  ■php 5.4.7  ■mysql 5.0.10  ■Apache 2.4.3

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

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

ANo.1 に追記です。といっても『下記URLを参照してください』というだけですが(汗 http://okwave.jp/qa/q8036014.html

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>3のDBアクセス時かな?と思って であれば「どうやって接続しているのか」(クライアントの文字セットをどうやってサーバに通知しているか)を提示してください。 MySQL関数であれば(いまどきネイティブなMySQL関数を使うとも思えませんが)mysql_set_charsetが抜けているとか、PDOなどであればdsnでcharsetを指定していないとかが思いつきますが、何も提示されていないので・・・

chacky0225
質問者

お礼

回答ありがとうございます。 情報の不足があった事をお詫びいたします。 問題は解決いたしました。 原因はやはりDB側文字コードの設定でした。 サーバ接続の照合順序が、サーバ全体では『utf8_general_ci』となっていましたが テーブルのカラム個々の設定は未設定だった為に起こっていた問題だったようで ここを揃えたところきちんと表示されました。

関連するQ&A

  • UTF-8にしても文字化けが直らない

    XAMPPでPHPとMySQLを使っています。 しかし、そのまま使うと文字化けが起きてしまいます。調べると「UTF-8」にすることで文字化けが起こらないとのことなので変更をし、以下のように全てutf-8に書き換えることができました。 mysql> show variables like 'char%' -> ; +--------------------------+----------------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | D:\program\xampp\mysql\share\charsets\ | +--------------------------+----------------------------------------+ しかし、それでも文字化けは直りませんでした。以下のコマンドで原因を確かめてみました。 mysql> use testdb; Database changed mysql> status -------------- Server characterset: utf8 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 Db characterset: latin1が原因だと思い、以下のコマンドを実行しました。 alter database testDB character set utf8; そしてもう一度テーブルを作りなおすと今度は文字化けどころか空白になってしまいました。 なにが原因で文字化け等が起こっているのか分かりません。助けてください。 OSは Windows Vista です。 バージョンは ApacheFriends XAMPP version 1.7.7 + Apache 2.2.21 + MySQL 5.5.16 (Community Server) + PHP 5.3.8 (VC9 X86 32bit thread safe) + PEAR です。 回答よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • EC-CUBEでの文字化け

    EC-CUBE初心者です。 ローカルのwindowsマシンにEC-CUBEをインストールしてみたんですが 管理画面の一部が文字化けしてます。 例えば”基本情報管理>SHOPマスター”のSHOP住所 の都道府県のコンボボックスの中身が”???”と なっています。 どこの設定がおかしいのでしょうか? 環境 ●EC-CUBE →2.11.4 ●MySQL →5.1.33 ●Apache →2.2.11 ●PHP →5.2.9 尚、mysqlの文字コードはUTF-8で show variables like 'character_set%';を実行したところ character_set_client →   utf8 character_set_connection→ utf8 character_set_database → utf8 character_set_filesystem →  binary character_set_results → utf8 character_set_server → utf8 character_set_system → となっております。 DBの文字コードがutf8 になっているとは思うのですが あとはphp.iniの設定かなとは思うのですが いろいろやってはいますがうまくいきません。 ご教授お願いします。

  • 文字化けが発生する

    Apache 2.0.54、PHP 5.0.4それから、MySQL 4.1.14でPHPのテスト環境をWindowsXP上に作りました。PHPとMySQLの設定ファイルで文字コードを、UTF-8に統一してほかのMySQL(4.0.12)からダンプしたファイルをUTF-8に変換した後にMySQL 4.1.14にインポートしました。 phpMyAdmin上からは文字化けなしにインポートしたファイルが見れるのですが、なぜか自分で書いたPHPスクリプトではデータ部分がすべて「?」に変わってしまいます。ブラウザの文字コードを変えても?で、試しにそのデータ部分のエンコードをPHP上から調べてみると「ASCII」になっていました。また、MySQLの環境変数のcharacter関係の変数はすべてUTF-8になっています。 データをUTF-8で出力したいのですが、どのようにすればいいでしょうか? 下が、コマンドラインから変数を参照した結果です。 mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+------+ | Variable_name | Value| +--------------------------+------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\ MySQL\MySQL Server 4.1\share\charsets/ | +--------------------------+------+

    • ベストアンサー
    • MySQL
  • 文字化けに関して

    環境 PHP:PHP5.3.8 MySQL:mysql-5.5.17-win32 phpmyadmin:phpMyAdmin-3.4.7-all-languages 文字化けに関して教えて下さい。 過去に何度も設定した経験がありますが、また同じ事ではまってしまいました。 現在、phpのプラグラム(プログラムの設定は charset=SHIFT-JISで設定)でMySQLへ入力処理を行っていますが、 どうしても文字化けしてしまいます。 MySQLの環境としては、 mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | utf8 | | character_set_results | sjis | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:/Program Files/MySQL/MySQL Srever 5.5/share/charsets/ | +--------------------------+----------------------------+ となっており、上記character_set_database がutf8である事が原因とあった為、 何とか変更しようとしましたが、変更できません。 phpmyadmin の設定も間違っているのでしょうか? そもそもどのような設定を行えば良いのか、正しい値を教えて頂ければ幸いです。 初歩的な質問で申し訳ありませんが、教えて下さい。

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

    MySQLにPHPでデータを入力しています。 utf8でデータを送信しています。 どうも MySQLの設定がうまくできてないようです。 どこを どうやって変えたらよいのでしょうか? mysql> show variables like 'char%'; +----------------------+-----------------------+ | Variable_name        | Value             | +----------------------+-----------------------+ | character_set_client    | cp932             | | character_set_connection  | cp932             | | character_set_database   | latin1             | | character_set_filesystem  | binary             | | character_set_results  | cp932             | | character_set_server   | latin1             | | character_set_system   | utf8              | | character_sets_dir     | C:\xampp\mysql\share\charsets\ | +----------------------+-----------------------+

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

    いつもお世話になっています。 WAMP環境で文字化けから抜け出せません。 ご教授お願いします。 ブラウザ上での入力、表示は正常ですが、コマンドプロンプトから直接テーブルの中身をselect * fromすると日本語のフィールだけ中身が文字化けします。 例)フォームで あいうえお(フィールド定義:varchar(100))と入力すると 縺ゅ>縺・∴縺・と表示されています。 Apache2.2.17, PHP5.3.5, MySQL5.5.9です。 Apache関連  httpd-languages.conf:AddDefaultCharset utf8・・・追記 PHP関連  php.ini: mbstring.internal_encoding=uft8 mbstring.language = Japanese mbstring.http_output = utf8 default_charset = "utf8" MySQL関連 mysql> show variables like 'char%'; +--------------------------+-----------+ | Variable_name       | Value | +--------------------------+-----------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files (x86)\MySQL\MySQL Server 5.5\share \charsets\ | +--------------------------+---- #### my.ini #### [client] port=3306 [mysql] default-character-set=utf8 # SERVER SECTION [mysqld] ※中略※ # The default character set that will be used when a new schema or table is # created and no character set is defined character-set-server=utf8 skip-character-set-client-handshake

    • 締切済み
    • PHP
  • 突然の文字化けで困っています (UTF-8→???)

    下記の文字列が意味不明な文字コードに変換されてDBに格納されてしまい困っています。調べたところSJIS,EUCではありませんでした。 山田 太郎(UTF-8) ↓ 山田 太郎 pear::db パラメータでcharsetにutf8を設定しています。 mysql> show variables like 'char%'; +--------------------------+----------------------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\xampp\mysql\share\charsets\ | +--------------------------+----------------------------------------------+ 何か同じような現象を体験された方がいましたらご教授ください。 足りない情報があれば補足欄へ再度投稿します。

    • ベストアンサー
    • MySQL
  • PHPとMYSQLの文字コードについておねがいします。

    Apache2、PHP5、MYSQL5.0を使用しています。 当方、PHPの初心者講座などを見てUTF-8で作っていこうと思い設定をしたものの、上手くいかず質問させていただきました。 PHPからQuery文(日本語)を送ってMYSQLのテーブルにINSERTしたのですが、文字化けしてしまいます。 my.iniのdefault-character-set=部分をutf8からsjisやujisなどに変えてやってみたのですが、文字化けの種類(?)が変ってしまうだけでやはり文字化けしてしまいました。 ALTER DATABASE AAA CHARCTER SET utf8をやっても変らず文字化けしてしまい、show variables like 'char%'でCharcterを調べたところ、下記のようになっていました。 charcter_set_client | utf8 charcter_set_connection| utf8 charcter_set_database | utf8 charcter_set_filesystem| binary charcter_set_results | utf8 charcter_set_server | utf8 charcter_set_system | utf8 MYSQLとPHPの文字に関係あるようなところをコピーしました。 どこかおかしなところがあるでしょうか。 ------my.ini----- [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 ----------------- ------php.ini----- output_buffering = Off extension=php_mbstring.dll [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On ------------------ どなたか解決策を知らないでしょうか。よろしくお願いします。

    • 締切済み
    • PHP
  • CSVをMYSQLにインポートすると文字化けする

    XAMPPでmysqlを使ってます。 CSVをインポートするとUTF-8が文字化けしてしまいます。詳しくわかる方いましたらお知恵をお貸しください。 まず、mysqlの設定ですが show variables like 'char%'; をおこなうと +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\xampp\mysql\share\charsets\ | +--------------------------+--------------------------------+ 8 rows in set (0.05 sec) となっています。 次に、アップロードするCSVですが、 1回目は、terapadを愛用しているので、terapadの機能でUTF-8に変換して保存したのですが、インポートすると文字化けしてしまいました。 次は、エクスプローラーでUTF-8に変換したファイルを読み込むと文字化けしており、エクスプローラーのエンコードで文字コードをUTF-8に変換し保存したものを、CSVに変換してインポートしたのですが、やっぱり文字化けしてしまいました。 私の知識ではこれ以上手がないのでなにかあたらしい突破口や間違いがあれば教えてください。

    • ベストアンサー
    • MySQL
  • MAMPのMySQLで文字化けする

    すみません、教えてください(><) mac( os X 10.7.5)でMAMP+Eclipse+PHPを使って以下のようにMySQLにデータ挿入 mysql_connect('localhost','root','root') or die(mysql_error()); mysql_select_db('mymy'); mysql_query('SET NAMES UTF-8'); mysql_query('INSERT INTO item SET id=1, name="あいうえお"'); をしたのですが、 phpMyadminからデータを確認してみると日本語が文字化けしてしまいます。 (phpMyadminからデータを挿入した場合はちゃんと表示されます。) 色々と調べ、 Eclipseの環境設定でワークスペースの文字コードやphpの文字コードをUTF-8にしたり、 MySQLのmy.cnfファイルの中に以下 [client] default-character-set = utf8 [mysqld] skip-character-set-client-handshake default-character-set = utf8 character-set-server = utf8 collation-server = utf8_unicode_ci init-connect = SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 を追加して再起動し、DBを一旦削除して再度作り直して挿入してみたりとやったのですが、改善されません。 サーバ接続の照合順序 は「utf8_general_ci」として作成しています。 コンソールからMySQLへ接続してDBの文字コードを確認してみると character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /Applications/MAMP/Library/share/charsets/ | というかたちになっています。 他にどういった点を改善すればいいのでしょうか? もうお手上げ状態でどうすることも出来ずにいます。。。

専門家に質問してみよう