人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:MySQL PHP プログラム 制作 意味不明
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● k6nch6n
●27ポイント

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

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

http://us3.php.net/mysql_client_encoding


2 ● graypenguin
●27ポイント

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...


3 ● まさひぃ
●26ポイント

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ