在MySql中读/写unicode数据

时间:2009-09-06 16:00:00

标签: c# sql mysql unicode

我正在使用MySql数据库,希望能够阅读&写unicode数据值。例如,法语/希腊语/希伯来语值。

我的客户端程序是C#(.NET framework 3.5)。

如何配置我的数据库以允许unicode?以及如何使用C#从MySql读取/写入unicode值?

更新:09年9月7日

好的,所以我的架构,表格和列设置为'utf8'+ collat​​ion'utf8_general_ci'。我打开连接时运行'set names utf8'。到目前为止这么好......但是,仍然将值保存为'??????? “

任何想法?

解决方案!

好的,所以C#客户端阅读&写unicode值,你必须包含在连接字符串:charset = utf8

例如:server = my_sql_server; user id = my_user; password = my_password; database = some_db123; charset = utf8;

当然你也应该将相关表定义为utf8 + collat​​ion utf8_bin。

4 个答案:

答案 0 :(得分:21)

解决方案!

好的,所以C#客户端阅读&写unicode值时,必须包含在连接字符串中:charset = utf8

例如:server = my_sql_server; user id = my_user; password = my_password; database = some_db123; charset = utf8;

当然你也应该将相关表定义为utf8 + collat​​ion utf8_bin。

答案 1 :(得分:2)

您必须为MySQL架构,表格甚至列设置排序规则。

大多数情况下,使用utf8_general_ci排序规则是因为它不区分大小写并且不区分重音比较。

另一方面,utf8_unicode_ci区分大小写并使用更高级的排序技术(如在'ss'附近排序eszet('ß'))。这种整理比其他两种要慢一点。

最后,utf8_bin使用二进制值比较字符串。因此,它也是区分大小写的。

如果您正在使用MySQL的Connector/NET(我推荐),一切都应该顺利进行。

答案 2 :(得分:1)

尝试在任何其他获取或发送之前使用此查询:

SET NAMES UTF8

答案 3 :(得分:0)

您需要将db charset设置为UTF-8(如果使用的是utf-8),将相关表/字段的排序设置为utf,在执行查询之前执行SET NAMES'UTF-8',当然要确保你在显示输出的html中设置了正确的编码。