我的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%”和“collation%”变量都表示“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/