以前、似た質問をしましたが、また別問題のため、別質問として投稿させてください。


Windows環境でMySQLからデータを引っ張ってきて、UTF-8エンコーディングのサイトで表示させようとすると文字化けしてしまいます。

MySQLのコマンドでSHOW VARIABLES LIKE 'char%';を実行したところ、下記結果を得ました。

+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\MySQL\MySQL Server 4.1\share\charsets/ |
+--------------------------+-------------------------------------------+

原因をご存知の方はお教えいただけますと幸いです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/11/13 21:53:55
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:hamster009 No.1

回答回数3431ベストアンサー獲得回数50

ポイント27pt

ここを参考にしてください。

http://vivian.reverb.jp/mysql4.1.html

上記が完璧なmysql構築です。もし再コンパイルなどできない環境でしたら、

お使いのphpウェア(mysqlと交信するウェア)のソースの中で明示的に

文字コードを指定することでも文字化けは解消します。くわしくは

過去ログを検索してください。

id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント27pt

character_set_client=latin1 な環境では日本語の表示は不可能です。

Windows環境でMySQLからデータを引っ張ってきて

の部分がどうやっているか分かりませんが、実行前に必ず

SET NAMES 'utf8';

を実行するようにしてください。

http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_40

id:tdj01

上記を行い、コマンドラインでインサートしたところ、日本語が空欄で挿入されてしまいました。

何か間違った設定があるのでしょうか?

2006/11/13 17:42:58
id:b-wind No.3

回答回数3344ベストアンサー獲得回数440

ポイント26pt

コマンドラインというのが Windows のコマンドプロンプトの事であるならば、

SET NAMES 'SJIS';

を実行する事になります。

以上のように、SET NAMES で指定する内容はクライアントの文字コードに合わせてください。

http://q.hatena.ne.jp/1163352251

id:tdj01

ここのデータを表示させる、PHPプロラムがUTF-8にしなければならないのですが、SJISにすると、PHPプログラムでそのデータを表示する際に文字化けしてしまいませんでしょうか?

2006/11/13 18:36:30
  • id:b-wind
    回答が2回までだったのでコメントにてフォローしておきます。
    >SET NAMES で指定する内容はクライアントの文字コードに合わせてください。
    と言っているように、コマンドプロンプトから実行する場合と各種プログラムから実行する場合で SET NAMES に指定すべき値は異なります。
    PHP の場合何に設定すべきかはPHPの文字コード設定にも寄るので一概には言えませんが、おそらく mb_string.internal_encoding の設定と同じにすべきかと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません