首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将PHP特殊字符解析为MySQL?

问如何将PHP特殊字符解析为MySQL?
EN

Stack Overflow用户
提问于 2012-10-05 05:30:54
回答 3查看 1.2K关注 0票数 6

我正在使用PHP解析一些数据并将其放入MySQL中。但是,如果数据包含像êm-Khê MySQL这样的特殊字符,则输出以下错误:

代码语言:javascript
复制
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xEAm-Kh\xEA...'

经过测试,MySQL不是问题所在。(表和列排序规则是utf8_general_ci)当我直接(手动)将êm-Khê字符串插入到表中时,它就会进入表中。所以MySQL可以接受这些数据。

那么,你知道为什么在PHP级别上会出现这个错误吗?

我对编码知识不太了解,也不太了解。

  • 为什么在查询中将ê转换为\xEA?

因此,当我获得像ê这样的数据时,如何将其放入数据库,因为它是ê不变的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-05 05:43:07

因此,问题是您的db连接不是UTF8,而是可能是LATIN1,所以您必须在连接到数据库后使用utf8_encode()函数或执行SET NAMES utf8。

代码语言:javascript
复制
$handle = new PDO("mysql:host=localhost;dbname=dbname",
'username', 'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

这个帖子有一些很好的参考和解释

票数 3
EN

Stack Overflow用户

发布于 2012-10-05 05:43:02

我的猜测是,PHP和MySQL之间存在编码不匹配。ê并没有真正被“转换”为\xEA,只是MySQL不知道EA应该是什么字节序列,因此只是抱怨原始字节是错误的。首先,您需要知道PHP中字符串的编码方式;这取决于字符串来自何处。然后,您需要设置正确的MySQL连接编码,以便MySQL知道要发送它的字符串是什么编码。如何做到这一点取决于您如何准确地连接到数据库。

有关整个过程的详细情况,请参见在Web应用程序中处理Unicode前端回退。

票数 0
EN

Stack Overflow用户

发布于 2013-03-01 14:17:26

您可以使用此函数。mysql_real_escape_string($user)、mysql_real_escape_string($password);

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

https://stackoverflow.com/questions/12740054

复制
相关文章

相似问题

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