asp.net - 如何通过 ODBC 将 UTF8 文本从 ASP.NET 写入 MySQL?

标签 asp.net mysql utf-8 odbc

我在共享主机上使用 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;” - 它会产生错误。

我缺少什么想法吗?

最佳答案

需要检查的一些事项:

  1. 确保您的表格和文本字段确实接受 utf8:
    使用MySQL Query Browser并尝试手动编辑一些数据。
    如果保存编辑后保持正常,则字段和表格设置正确。

  2. 确保您实际上插入的是 utf8 兼容字符,而不是基于另一种编码形式的字符,例如中文的 GB2332。
    如果是这种情况,您可能需要将字符串转换为 utf8,然后才能将它们发送到数据库。
    您可以使用 Encoding 来查看.Net 中的类。
    我有answered a post不久前相关的事情有一个CodeProject article就这个问题。

  3. 您可能还需要确保 ODBC connection string包括以下内容:

    字符集=utf8;

有一个list of all the parameters您可以用于 ODBC 连接。

关于asp.net - 如何通过 ODBC 将 UTF8 文本从 ASP.NET 写入 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540581/

相关文章:

javascript - 鼠标向上 javascript 事件未触发图像控件

C# facebook graph/如何在 Facebook 相册上上传图片?

c# - 连接和更新数据表

MySQL - 为什么索引列上的 select 语句返回索引信息,而不是列数据?

PHP MySQL utf-8 欧元符号在菱形上显示为问号

c# - 从Elasticsearch 5.5.0升级到7.5.1后的构建错误

php - PHP-MySQL 或 MySQLi 中哪个最快?

PHP Access 对象包含在一个类中。

swift - 如何在 Swift 中获取由整数表示的 Unicode 代码点?

python - 为什么编码并不总是有效?