首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用libmysql插入特殊字符

用libmysql插入特殊字符
EN

Stack Overflow用户
提问于 2019-05-28 10:13:24
回答 1查看 193关注 0票数 0

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

代码语言:javascript
复制
INSERT INTO mytable ( field )  VALUES( 'Justificatif d\'achat numéro 1523641305' )

它错误地失败了:

代码语言:javascript
复制
Incorrect string value: '\xE9ro 15...' for column 'field' at row 1

如果我复制我的请求,比如,将它复制到工作台中并执行它,它就能工作。但要让它从我的代码中运行是不可能的。

我的列是字符集utf8中的默认排序规则。

我使用mysql_real_connect连接到我的DB,并在执行连接后调用"SET NAMES 'utf8'"

第一编辑:我已经阅读了Inserting UTF-8 encoded string into UTF-8 encoded mysql table fails with "Incorrect string value"的问答,并试图应用建议的解决方案,但它对我无效。就我所理解的问题而言,我的问题是不同的,因为我试图插入的字符是Unicode中的U+00E9,因此只有2个字节。此外,我还可以将它插入到我的DB中,而不是从我的C++代码中插入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 05:31:38

E-急性:

  • this实体:é --在数据库中避免这样做。
  • latin1:十六进制E9
  • utf8:十六进制C3A9
  • Unicode "codepoint":U+00E9 --在数据库中避免这种情况。

在建立从C++客户端到MySQL的连接时,请说明客户端中使用的字符编码。基于“不正确的字符串值:‘\xE9ro.”,我假设它是latin1。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56339883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档