XMLHttpRequest中的UTF-8字符已损坏

时间:2012-05-14 15:10:08

标签: php mysql ajax utf-8 xmlhttprequest

我正在使用XMLHttpRequest将一些行插入MYSQL数据库。我将相关的表列定义为接受UTF-8字符(Collation: utf8_general_ci)。

从请求启动的查询是:

INSERT INTO e4s_event_list (producerID, eventID, eventName, eventDescription, eventVenue, eventDate) 
VALUES('2', 'f49c104b-6193-47b7-b196-ca914e5238c4', 'בכורה מאת שרון אייל וטאבולה ראסה מאת אוהד נהרין', '', 'Conversion Venue - 0', '2012-06-04T20:30:00')

如果我从phpMyAdmin查询此内容,eventDescription列会毫无问题地获得所需的值。但是,当从XMLHttpRequest启动查询时,eventDescription列会获得此值:

בכורה מ×ת שרון ×ייל וט×בולה..

我当前的标题是:

XMLHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
XMLHttpRequest.setRequestHeader("Content-length", params.length);
XMLHttpRequest.setRequestHeader("Connection", "close");

我尝试将Content-Type更改为:

XMLHttpRequest.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");

但是,由于某种原因,该请求根本不起作用。

我知道这不是数据库定义问题,因为所有其他未从XMLHttpRequest启动的查询都是而不是被搞砸了。

如何正确插入希伯来字符? 感谢。

1 个答案:

答案 0 :(得分:2)

MySQL可能认为PHP将字符串作为另一种字符编码传递(例如ISO-8859-1)。如果是这种情况,您可以通过在将数据写入数据库之前将此查询发送到MySQL来解决此问题:

SET NAMES=UTF8;