データベース自体、クライアント、接続、テーブルにデータをロードしたファイルなどがすべて utf8 であったにもかかわらず、テーブルに utf8 を正しく表示するのに問題がありました。私は何かを見逃していて、それらのいずれかが当てはまらないか、ここでさらに大きな何かを見逃しています。いいえ、私が示した後の16進テストのように、それはすべて良いです. 他の問題のトラブルシューティングに役立つと思うので、これに出くわした他の人のために残りを保持しますか? わからない。
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 | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\MySQL\share\charsets\ |
+--------------------------+--------------------------+
8 rows in set (0.00 sec)
は、私にはよく見えますよ。character_set_server は latin1 ですが、[mysqld] の下の my.iniでも変更できないようです。潜在的に問題である可能性があり、そうであれば、Windows自体で何かを変更する必要があると思いますか? デフォルトでは、Windows 用に複数の .ini があり、最後に my.ini に読み込まれるとは限りませんでした。必ず正しいものに変更する必要がありました。他の何かが間違っていると飛び出した場合の他の相対ビット:character-set-server=utf8
character_set_server=utf8
CREATE TABLE `vocab` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`kanji` varchar(250) DEFAULT NULL,
`hiragana` varchar(250) DEFAULT NULL,
`english` varchar(250) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
上記のデータベースにこのテーブルを作成し、LOAD DATA INFILE
コマンドを使用して csv にロードしました。LOAD DATA INFILE は、そのステップなどで別の文字セットに変換されますか? そうではなく、ファイルは100%問題ありませんでした。
とにかく、これが私がコマンドラインで得たものです:
mysql> select kanji,hiragana,english from vocab where id=2;
+-------+----------+---------+
| kanji | hiragana | english |
+-------+----------+---------+
| 愛 | あい | love |
+-------+----------+---------+
1 row in set (0.00 sec)
はい、これらは確かに utf8 文字ですが、正しい文字ではありません。それでも、健全性を再確認したところ、csv は実際には utf8 です。
編集:さらにいくつかのテストを行いました
mysql> select hiragana, HEX(hiragana),LENGTH(hiragana),CHAR_LENGTH(hiragana) FR
M vocab where id=2;
+----------+---------------+------------------+-----------------------+
| hiragana | HEX(hiragana) | LENGTH(hiragana) | CHAR_LENGTH(hiragana) |
+----------+---------------+------------------+-----------------------+
| πüéπüä | E38182E38184 | 6 | 2 |
+----------+---------------+------------------+-----------------------+
1 row in set (0.04 sec)
そして、少なくとも長さと char_length の比較も 3:1 であるため、正しいようです。それだけでなく、16進数もひらがなであるべきだと思われるので、私が使用しているコマンドラインクライアントの設定が間違っているのではないかと思います。
また、ブラウザでテストしたところ、文字が正しく表示されます。ヘックスが物語を十分に語ったので、実際には必要なステップではありませんが、ねえ.
要約する:
- クライアントだけの表示の問題です。しかし、どうすればそれを修正できますか?それを修正する方法はありますか、それとも MySQL Command Line Client 5.5 がすべての文字タイプをサポートしていないだけですか?