我正在解析XML并将其放入MySQL。现在MySQL对于插入的某些特定记录显示以下错误:
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xEAm-Kh\xEA...'
当我检查XML中的数据时,它显示为iêm-Khê
因此,特殊字符ê
正在转变为xEA
这是什么?
如何解决这个问题以维持&将其原始角色放入数据库?
仅供参考,这里有一些信息:
latin1_swedish_ci
utf8_general_ci
iêm-Khê
值复制/粘贴到MySQL Record中时,它会被保存。 (我的意思是,MySQL正在接受特殊字符。)所以我认为问题出在Coding端。答案 0 :(得分:1)
经过一些额外的研究后,我遇到了两种可能的解决方案:
- the first option is to use php's utf8_encode() function.
- the second option uses some code with the PDO using set names (though there seemed to be some discussion as to whether or not this worked for everyone.
$handle = new PDO("mysql:host=localhost;dbname=dbname",
'username', 'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
以下链接提供了一些其他有用的信息: See here
答案 1 :(得分:0)
您需要将数据库的字符集设置为UTF-8
。
的命令:强> 的
ALTER DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci;
要更改列:
ALTER TABLE [table_name] MODIFY
[column_name] [data_type]
CHARACTER SET utf8
COLLATE utf8_general_ci;
答案 2 :(得分:0)
您应该将UTF-8 charset
定义为mysql数据库,default
曾为latin charset
,我们可以定义utf-8
以及table definition
或在database
创作,
到表
create table `my_table` (.....
.... ) DEFAULT CHARSET=utf8;
到数据库
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8
如果有问题,请纠正我