【发布时间】:2015-07-23 10:59:25
【问题描述】:
我正在用 PHP 创建一个票务系统,它使用 imap 从 Exchange 服务器获取邮件。
当我将来自电子邮件的 HTML 消息放入 MySQL 数据库时,当消息正文中有一个特殊字符时会出现以下错误,例如 è:
Incorrect string value: '\xE8. ' for column 'message' at row 1
我已经尝试过类似的东西:
utf8_encode($message);
但这只是从消息中删除了所有不应该发生的 HTML。
MySQL 表:
mysql> show create table crm.tickets;
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tickets | CREATE TABLE `tickets` (
`id` int(100) NOT NULL AUTO_INCREMENT,
`senderName` varchar(40) DEFAULT NULL,
`senderEmail` varchar(60) DEFAULT NULL,
`companyID` int(15) DEFAULT NULL,
`userID` int(15) DEFAULT NULL,
`subject` varchar(100) DEFAULT NULL,
`message` longtext,
`timestamp` int(60) DEFAULT NULL,
`toName` varchar(120) DEFAULT NULL,
`toEmail` varchar(60) DEFAULT NULL,
`ownerID` int(11) DEFAULT NULL,
`ticketStatus` int(1) DEFAULT NULL,
`ticketType` int(2) DEFAULT NULL,
`timeSpend` int(10) DEFAULT NULL,
`locked` int(1) DEFAULT NULL,
`queue` int(3) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
有人知道吗?
【问题讨论】:
-
MySQL 表使用什么字符集? dev.mysql.com/doc/refman/5.5/en/charset.html
-
@HenryTK 查看我的帖子,进行了编辑。
-
连接mysql服务器的字符集是什么?您是否将
SET NAMES 'utf8'作为第一条语句执行? -
@Marek 似乎我在使用 SET NAMES 时遇到了同样的错误
-
è 是有效的 UTF-8 字符。这是一个有用的转义参考:charbase.com/00e8-unicode-latin-small-letter-e-with-grave