0

我正在解析 XML 并将其放入 MySQL。现在 MySQL 显示一些特定记录插入的以下错误:

SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xEAm-Kh\xEA...'

当我检查 XML 中的数据时,它显示为iêm-Khê
所以特殊字符ê正在转换为xEA
它是什么?

我怎样才能解决维护并将其原始字符放入数据库的问题?

仅供参考,这里有一些信息:

  • 我的整个 MySQL DB 本身正在使用latin1_swedish_ci
  • 但是那个 TABLE & COLUMN 正在使用utf8_general_ci
  • ** 当我直接手动将该值复制/粘贴iêm-Khê到 MySQL 记录中时,它会被保存。(我的意思是,MySQL 正在接受特殊字符。)所以我认为问题出在编码方面。
4

3 回答 3

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"));

以下链接有一些其他有用的信息: 见这里

于 2012-10-05T04:14:29.220 回答
0

您应该定义UTF-8 charsetmysql DB,通过default它曾经是latin charset,我们可以定义utf-8连同table definition或在database创建时,

到表

 create table `my_table` (.....

  .... ) DEFAULT CHARSET=utf8;

到数据库

CREATE DATABASE mydb  DEFAULT CHARACTER SET utf8 

如果我穿了,请纠正我

于 2012-10-05T04:19:07.957 回答
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;
于 2012-10-05T04:13:08.163 回答