如何用PHP将特殊字符解析成MySQL?

夏期劇*_*期劇場 6 php unicode encoding special-characters

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

SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xEAm-Kh\xEA...'
Run Code Online (Sandbox Code Playgroud)

我测试后,MySQL不是问题.(表和列整理是utf8_general_ci)当我将êm-Khê字符串直接插入表中(手动)时,它会进入它.所以MySQL可以接受这些数据.

所以任何想法为什么它在PHP级别出现此错误?

我不太了解并且非常了解编码知识.

  • 为什么它会在查询中ê转换\xEA

所以,当我得到数据时,我ê怎么能把它放到数据库中,因为它ê没有变化?

Des*_*nov 3

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

$handle = new PDO("mysql:host=localhost;dbname=dbname",
'username', 'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
Run Code Online (Sandbox Code Playgroud)

该线程有一些很好的参考和解释