【问题标题】:UTF-8 Characters in XMLHttpRequest are corruptedXMLHttpRequest 中的 UTF-8 字符已损坏
【发布时间】:2012-05-22 02:21:39
【问题描述】:

我正在使用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 发起的所有其他查询都没有被搞砸了。

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

【问题讨论】:

    标签: php mysql ajax utf-8 xmlhttprequest


    【解决方案1】:

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

    SET NAMES=UTF8;
    

    【讨论】:

    • 啊,我确实忘了在request 代码中做mysql_query("set names utf8")。谢谢!
    • 真好,就是这么简单:)
    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多