PHPでMySQLとの連動したプログラムを制作しておりますが、DBの文字コードを調べたいときにどうしていいか分からなくなりました。


mysql_client_encodingでやってみたのですが、latin1という意味不明な文字コード名が返ってきました。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/07/29 01:29:37
  • 終了:2006/08/05 01:30:05

回答(3件)

id:k6nch6n No.1

k6nch6n回答回数171ベストアンサー獲得回数112006/07/29 01:38:57

ポイント27pt

latin1というのは西ヨーロッパの言語セットを扱うときに利用する文字コードの名前です。接続先のデータベース(mysql_client_encoding($link)の$link)の文字コードが西ヨーロッパに設定されているだけで、データベースの文字コードを調べるという目的はすでに達成できています。

latin1という結果が期待するものでない場合は、データベースの文字コードがどうなっているか、まずはMySQLの側で確認してみるのがよいと思います。

http://us3.php.net/mysql_client_encoding

id:graypenguin No.2

graypenguin回答回数17ベストアンサー獲得回数02006/07/29 07:51:16

ポイント27pt

mysql_client_encoding関数は、phpでMySQLに接続に使った、クライアントの文字コードを返すので、DB自体の文字コードを返したわけではありません。rpmパッケージやソースを明示的に文字コード指定せずにインストールした場合、ほとんどが、クライアントの文字コードはLatin1になっていると思います。

DBの文字コードを知る方法の一つとして、

"SHOW VARIABLES LIKE 'character_set_serv%'"

とクエリーを発行して返りから確認することができます。

MySQLは4.1からクライアントの文字コードに合わせて勝手にサーバー側でエンコードする仕様に変更になっています。

makocanさんの場合、もし4.1以上を使っているのであれば、

接続した後、

'SET NAMES 文字コード'と明示的にクライアントの文字コードをLatin1から変更しておかないと、文字化けの原因になると思います。

他にも、サーバー側で起動時に、変更しておくという方法もあります。

http://phpspot.net/php/pgMySQL4.1%8CnEUC-JP%82%CC%8F%EA%8D%87.ht...

id:seidai3 No.3

まさひぃ回答回数12ベストアンサー獲得回数12006/07/29 08:21:58

ポイント26pt

MySQL でサポートされるキャラクタセットと照合順序

http://dev.mysql.com/doc/refman/4.1/ja/charset-charsets.html

おそらくEUC-JPやShift_jisといった値が帰ってくるのを期待されたのではと思いますが、もしそうだとしたらMySQLの設定を変える必要があります。

環境が全くわかりませんが、この辺りが参考になるのではないでしょうか。

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

コメントはまだありません

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません