我在共享主机上使用 MySQL 5,使用 MySQL 5.1 ODBC 驱动程序从 ASP.NET 3.5 进行连接。我想存储 UTF8 字符串。我的表曾经全部位于“latin1_swedish_ci”中,但我使用以下方法将数据库、表和列转换为 UTF8:
ALTER DATABASE `my_db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
ALTER TABLE `my_table` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
ALTER TABLE `my_table` CHANGE `subject` `subjext` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
但是当使用 ODBCConnection 和 ODBCCommand 将非 ascii 字符(如“游ぶ”)插入我的数据库时,我仍然遇到此错误:
错误 [HY000] [MySQL][ODBC 5.1 驱动程序][mysqld-5.0.51b-community-nt]不正确的字符串值:'\xE3\x80\x80\xE6\x89\x8B...'对于第 1 行的“主题”列
请注意,由于我使用的是 5.1 驱动程序,因此无法使用“SET NAMES utf8;” - 它会产生错误。
我缺少什么想法吗?
最佳答案
需要检查的一些事项:
确保您的表格和文本字段确实接受 utf8:
使用MySQL Query Browser并尝试手动编辑一些数据。
如果保存编辑后保持正常,则字段和表格设置正确。确保您实际上插入的是 utf8 兼容字符,而不是基于另一种编码形式的字符,例如中文的 GB2332。
如果是这种情况,您可能需要将字符串转换为 utf8,然后才能将它们发送到数据库。
您可以使用 Encoding 来查看.Net 中的类。
我有answered a post不久前相关的事情有一个CodeProject article就这个问题。您可能还需要确保 ODBC connection string包括以下内容:
字符集=utf8;
有一个list of all the parameters您可以用于 ODBC 连接。
关于asp.net - 如何通过 ODBC 将 UTF8 文本从 ASP.NET 写入 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540581/