我想在MySQL数据库中插入阿拉伯语数据。我尝试使用以下命令将表格编码更改为UTF-8:
ALTER TABLE `t` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
我也尝试了排序规则utf8_bin,我在my-default.ini文件中更改了它(在Windows上),但我得到的是这样的字符:Ï¡┘àϺϻϮ
这是我得到的一个例子:
Value inserted || Value selected || Hex value selected
دددد || ϻϻϻϻ || C38FC2BBC38FC2BBC38FC2BBC38FC2BB
rrr || rrr || 727272
有什么建议吗?
编辑:问题是通过编辑mysql文件解决的。请参阅下面接受的答案。
答案 0 :(得分:0)
我担心你现在让事情变得更糟。这看起来像"双重编码"。但我不确定。请提供SELECT col, hex(col) ...
以获取一些示例,以及它应该是什么样的。
使CHARACTER SET
在MySQL中正常工作需要做几件事。让我们说你想完全是utf8(或utf8mb4),这是正确的'要做的事。
SET NAMES utf8
(或等效的,取决于客户端的库),告诉mysqld你的客户端的字节是utf8。CHARACTER SET utf8
。 (通常表格默认就足够了。)<meta ... utf8>
。如果你可以重新开始,那可能是最好的。如果不,... 所有这些以及更多内容,包括如何修复双重编码,都可以在my blog中找到。
答案 1 :(得分:0)
我终于解决了这个问题。
在使用命令检查mysqld获取默认选项的位置后:
mysqld --help --verbose > temp_file_path
在临时文件中,我发现它获得了如下所述的默认选项:
Default options are read from the following files in the given order:
C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf C:\Program Files\MySQL\MySQL Server 5.6\my.ini C:\Program Files\MySQL\MySQL Server 5.6\my.cnf
我的机器上找不到这些文件,所以我不得不重命名文件&#39; my-default.ini&#39;到了'my.ini&#39;。将正确的编码添加到文件中,问题就解决了。