Windows命令行客户端5.5 UTF8显示问题

时间:2013-09-09 23:55:50

标签: mysql utf-8

即使数据库本身,客户端,连接,将数据加载到表中的文件等等都是utf8,我也一直无法获得正确显示utf8的表。 要么我错过了一些东西,其中一件事情不成立,或者我在这里错过了更大的东西。不,这一切都很好,因为我确实展示了后来的十六进制测试。保留其余的这个,因为我猜它可能有助于解决其他问题吗?说不上。

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中使用character-set-server=utf8character_set_server=utf8进行更改。可能是问题,如果是这样,我猜我可能不得不在Windows本身改变一些东西?原来,默认情况下有多个.ini用于Windows,它不一定加载到my.ini最后。只需要确保在正确的位置更改它。其他相对位,以防其他东西跳出错误:

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。不仅如此,十六进制似乎也应该是平假名,这让我相信可能我正在使用的命令行客户端设置错误显示它或什么?

此外,在浏览器中测试它并正确显示字符。自十六进制讲述了足够多的故事以来,并不是真正必要的一步,但是嘿。

总结:

  1. 这只是客户端显示的问题。但是,我该如何解决这个问题呢?有没有办法解决它或MySQL命令行客户端5.5不支持所有字符类型?

0 个答案:

没有答案