mysql - 无法使用 ADO/ODBC 将重音字符写入 MySQL

标签 mysql encoding utf-8 odbc ado

我的C++/Win32/Unicode程序使用ADO/MSDASQL/MyODBC链将数据写入MySQL。

问题是字符串在到达 MySQL 之前被转换为 latin1,而 MySQL 需要 UTF8。因此,重音字符将被视为无效字符而被拒绝。

我的程序将 OLE 字符串(UFT16 编码)传递给 ADO,但 MyODBC(MySQL ODBC 驱动程序)以某种方式接收 latin1 字符串(我从源代码重新编译了 MyODBC,以通过 SqlBindParameter ODBC 函数检查驱动程序中的内容) .

我尝试过使用 ANSI 和 Unicode 版本的 MyODBC 5.3 驱动程序。另外,MySQL 的所有“char%”和“collat​​ion%”变量都表示“utf8”。 MyODBC 字符集配置为 utf8。

ADO 和/或 MSDASQL 如何将我的字符串转换为 latin1?

TIA。

最佳答案

在带引号的字符串前面加上 N 将数据保存为 Unicode:

INSERT INTO someTable (someField) VALUES (N'Ång')

关于mysql - 无法使用 ADO/ODBC 将重音字符写入 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23238718/

相关文章:

C++向MySQL插入数据返回错误

mysql - 创建一个 Join,为任何可能的重复项留下一行

c# - 如何在 C#.Net 中获取编码为 UTF-8 的 CSV 文件?

java - 为什么从 UTF-8 到 ISO-8859-1 的转换在 Windows 和 Linux 中不一样?

php - 如何在 PHP 中验证 utf 序列?

mysql - 不同数据库厂商如何存储数据库的元数据

PHP 以水平方式显示来自 MySql 的数据

c - PugiXML 值输出编码

Perl:latin1 模块中的字符串文字 - 我想要 utf8

java - 编码问题 - 我认为 UTF-8 被视为 ISO-8859-1