我正在使用MySql数据库,希望能够阅读&写unicode数据值。例如,法语/希腊语/希伯来语值。
我的客户端程序是C#(.NET framework 3.5)。
如何配置我的数据库以允许unicode?以及如何使用C#从MySql读取/写入unicode值?
好的,所以我的架构,表格和列设置为'utf8'+ collation'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 + collation utf8_bin。
答案 0 :(得分:21)
解决方案!
好的,所以C#客户端阅读&写unicode值时,必须包含在连接字符串中:charset = utf8
例如:server = my_sql_server; user id = my_user; password = my_password; database = some_db123; charset = utf8;
当然你也应该将相关表定义为utf8 + collation 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中设置了正确的编码。