MySQL阿拉伯字符编码

时间:2015-04-11 13:55:28

标签: mysql encoding character-encoding

我想在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文件解决的。请参阅下面接受的答案。

2 个答案:

答案 0 :(得分:0)

我担心你现在让事情变得更糟。这看起来像"双重编码"。但我不确定。请提供SELECT col, hex(col) ...以获取一些示例,以及它应该是什么样的。

使CHARACTER SET在MySQL中正常工作需要做几件事。让我们说你想完全是utf8(或utf8mb4),这是正确的'要做的事。

  • 在客户端中使用utf8编码的字节。这是获取数据的函数。
  • 通过说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;。将正确的编码添加到文件中,问题就解决了。