0

我一直被困在这种情况下。

我的应用程序在 C++ 中,它通过 MySQL odbc 连接器 v5.2 Unicode 驱动程序连接到 MySQL 数据库 5.5.34。

我的表使用字符集和排序规则属性“utf-8”。要插入补充 unicode 字符,我通过

我的表最初是创建的:

CREATE TABLE mytable (SAMPLECOLUMN text) ENGINE=InnoDB DEFAULTCHARSET=utf8;

changed to,
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

在此之后,我可以直接(不是通过我的应用程序)将补充字符插入到包含“TEXT”数据类型的列中。

odbc 连接器在遇到补充字符时崩溃。

以下是我的一些my.ini配置。

[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8
default-storage-engine=INNODB

我试图插入的查询:

INSERT INTO mytable (SAMPLECOLUMN) VALUES ("乕乭乺丕");

任何指针/抬头都会很棒。

此外,尝试使用 v5.3 Unicode MYSQL odbc 连接器和 v1.0.5 MariaDB ODBC 连接器,仍然相同。

提前致谢。

4

2 回答 2

4

这里的解决方法是使用 MariaDB odbc 连接器连接到 MySQL 数据库。 https://mariadb.com/my_portal/download/connector-odbc/1.0

确保您在 ODBC dsn 中设置了此项并将连接字符集保持为空

MariaDB 连接器

从 MyODBC v5.2 开始,SET NAMES已弃用。因此需要使用 MariaDB 连接器。希望补充字符问题在 MySQL odbc 连接器中得到修复。

于 2016-02-23T09:40:24.783 回答
0

您需要SET NAMES utf8mb4在连接到 MySQL 后发出。否则,连接无法处理 4 字节字符。

如果这还不够,那就追下去SQLExecDirectW——看看是否有更新。

于 2016-01-15T02:19:50.617 回答