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'。将正确的编码添加到文件中,问题就解决了。
我想在 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'。将正确的编码添加到文件中,问题就解决了。