万能的CSDN论坛啊,谁能告诉我WHY!
最近在用MySQL的时候发现很大的问题,请大家帮我分析分析:
我使用的字符集是utf-8,在我的表中有一个CHAR(16)的字段是用来存放密码的,密码是经过加密的。在往里面写入数据的时候,我发现0x81、0x8d、0x8f、0x90、0x9d这五个字符会被替换成0x3f,就是“?”。其他的字符又没有关系,这怎么办呢。
我的基本使用情况如下:
系统:Win 2000 Pro
版本:4.1.7 nt
Server version 4.1.7-nt-log
Protocol version 10
Connection localhost via TCP/IP
TCP port 3306
Uptime: 1 min 25 sec
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
我把表的字符集改成latin1,则没有这样的问题,但是我不知道这样改了以后存储中文会不会有类似的问题。请大家指教。
我向MySQL提出这个问题,结果被告知utf8不支持高位为1的字符,但是其他高位为1的字符又没有问题。而且,在MySQL上面很多人都提出了这个问题。
下面是我的Bug Report
http://bugs.mysql.com/bug.php?id=8943