アプリ版:「スタンプのみでお礼する」機能のリリースについて

最近、MySqlを勉強し始めたのですが、
文字コードの意味が分からなく困っています。



質問1

クライアントPC上のアプリケーションから、
サーバ上のMySqlデータベースにクエリを発行した時

クライアントPC上のアプリケーション→サーバーPC上のMySqlデータベース

ここでの環境は

・MySqlは4.1以前のバージョン
・クライアントPCのアプリケーションとサーバ上のMySqlは文字コードが異なる


この時、サーバー上のMySql内ではクエリが文字化けして、発行したクエリに対する正しい結果が得られない


まずここまでの理解は合ってるのでしょうか?




質問2

クライアントPC上のアプリケーション→サーバーPC上のMySqlデータベース

環境
・MySql4.1以降のバージョン
・クライアントPC上の文字コードとサーバ上のMySql内での文字コードが異なる



MySql4.1以降に関してはMySqlを設定する事によって、
自動的に文字コードを変換してくれる。

そのMySqlの設定というのが、

Server characterset:
Db characterset:
Client characterset:
Conn. characterset:

この部分になるのでょうか?


また、それぞれの文字コードの設定が何を意味してるかが分からず困っています。(よく分からないので、デフォルトで設定されたlatin1にしたままです)


宜しくお願いいたします。

A 回答 (1件)

MySQLは4.0を少し使って、その後、データ移行せずに5.0を使っているので、詳しいことは分かりません。



MySQLユーザ会のFAQによると、MySQL 4.1から文字コードの自動変換が行われるようになったようですが、質問1、質問2とも、あなたの解釈は誤っているようですよ?

MySQL 4.0までは文字コードが間違っていても、MySQLは何もしていなかったので、クライアントとサーバで文字コードが不一致でも何もチェックされず、結果的に間違った使い方でも、文字化けせずに動いていたのだと思われます。ただし、ソートなどの順序は、利用者の期待通りだったかは不詳です。

MySQL 4.1でunicodeがサポートされ、文字コードの自動変換が行われるようになり、誤った組み合わせで使っていれば文字変換が行えず文字化けが顕著に現れるようになったのです。

>そのMySqlの設定というのが、
>Server characterset:
>Db characterset:
>Client characterset:
>Conn. characterset:
>この部分になるのでょうか?

そうです。

>それぞれの文字コードの設定が何を意味してるかが分からず

ネットで検索すれば、いくらでも説明が出てきます。

>デフォルトで設定されたlatin1にしたままです

日本語のデータは、扱わないのですか?

(1)日本MySQLユーザ会
 http://www.mysql.gr.jp/
 FAQの「4.1以上の壁」を、まず読んでください。

参考URL:http://www.mysql.gr.jp/
    • good
    • 0
この回答へのお礼

日本MySQLユーザ会のサイトを見させていただきました。私は大分勘違いをしていたようです。。ご指摘ありがとうございます。character_set_connectionなどの変数名で検索をかけたら、設定が何を意味しているかも見つかりました。まだまだ初心者レベルを脱しきれて居ない事から分からない事だかけです。。また宜しくお願い致します。

お礼日時:2006/08/11 17:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!