MySQL 阿拉伯字符编码

MySQL Arabic Character Encoding

我想在 MySQL 数据库中插入阿拉伯语数据。我尝试使用以下命令将 table 编码更改为 UTF-8:

ALTER TABLE `t` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

我也尝试了排序规则 utf8_bin 并在我的-default.ini 文件中更改了它(在 Windows 上)但是我得到的都是这样的字符:Ï¡ ┘àϺϻϮ

这是我得到的示例:

Value inserted   ||   Value selected  ||  Hex value selected
دددد             ||  ϻϻϻϻ         || C38FC2BBC38FC2BBC38FC2BBC38FC2BB
rrr              ||    rrr            || 727272

有什么建议吗?

编辑:问题已通过编辑 mysql 文件解决。请参阅下面接受的答案。

恐怕你现在让事情变得更糟了。看起来像 "double encoding"。但我不确定。请提供一些示例 SELECT col, hex(col) ...,以及它应该是什么样子。

要使 CHARACTER SET 在 MySQL 中正常工作,需要做几件事。假设您想完全使用 utf8(或 utf8mb4),这是 'right' 要做的事。

  • 您的客户端中有 utf8 编码的字节。这是获取数据方式的函数。
  • 通过说 SET NAMES utf8(或等效的,取决于客户端的库)告诉 mysqld 您的客户端的字节是 utf8。
  • 将 table 列声明为 CHARACTER SET utf8。 (通常 table 默认值就足够了。)
  • 如果写入网页,<meta ... utf8>

如果你能重新开始,那可能是最好的。如果不,... my blog.

中提供了所有这些以及更多内容,包括如何修复双重编码

我终于解决了这个问题。

检查 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

None 个文件是在我的机器上找到的,因此我不得不将文件 'my-default.ini' 重命名为 'my.ini'。将正确的编码添加到文件中,问题就解决了。