gpt4 book ai didi

c++ - 使用 libmysql 插入特殊字符

转载 作者:行者123 更新时间:2023-11-29 15:58:19 25 4
gpt4 key购买 nike

在使用 libmysqlclient 的 C++ 软件中,我尝试将一行插入包含 html 编码字符(例如 é)的表中。该请求如下所示:

INSERT INTO mytable ( field )  VALUES( 'Justificatif d\'achat numéro 1523641305' )

失败并出现错误:

Incorrect string value: '\xE9ro 15...' for column 'field' at row 1

如果我复制我的请求,例如将其复制到工作台并执行它,它就会起作用。但它不可能从我的代码中运行。

我的列采用带有默认排序规则的字符集 utf8。

我使用 mysql_real_connect 连接到我的数据库,并在执行连接后调用“SET NAMES 'utf8'”

第一次编辑:我已阅读 Inserting UTF-8 encoded string into UTF-8 encoded mysql table fails with "Incorrect string value" 的问题和解答,并尝试应用建议的解决方案,但它对我不起作用。据我了解这个问题,我的问题是不同的,因为我尝试插入的字符是 Unicode 中的 U+00E9,因此只有 2 个字节。另外,我可以将它插入到我的数据库中,而不是从我的 C++ 代码中插入。

最佳答案

电子急性:

  • htmlentities: é -- 在数据库中避免这种情况。
  • latin1:十六进制 E9
  • utf8:十六进制C3A9
  • Unicode“codepoint”:U+00E9——在数据库中避免这种情况。

建立从 C++ 客户端到 MySQL 的连接时,请说明客户端中使用的字符编码。根据“错误的字符串值:'\xE9ro...”,我假设它是 latin1。

另外,您可以将表中的列(field)声明为 CHARACTER SET latin1utf8utf8mb4 。在第一种情况下,E9 将原封不动地通过。在其他情况下,E9将变成C3E9。

关于c++ - 使用 libmysql 插入特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56339883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com