在MySql中读/写unicode数据

我正在使用MySql DB,并希望能够读取和写入unicode数据值。 例如,法语/希腊语/希伯来语值。

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

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

更新时间:09年9月7日

好的,所以我的Schema,Table&columns设置为’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。

解决方案!

好的,所以对于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。

您必须为MySQL模式,表甚至列设置排序规则。

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

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

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

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

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

 SET NAMES UTF8 

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