2

我正在使用 jquery 的 ajax() 方法将包装在 XML 格式中的数据发送到服务器:

url = "http://mysite.com/service/command";    
input = "my string";
xml = "<request><space>"+space_id+"</space><input>"+input+"</input></request>";
$.ajax({ 
    type: "POST", 
    url: url,
    dataType: 'xml;charset=UTF-8',
    data: xml
});

如果传递给方法的“数据”属性的输入字符串中存在变音字符,则这些字符在发送到服务器之前会转换为其他一些奇怪的组合,尽管是 UTF-8 字符编码。例如,贝娄是提交给服务器的数据,输入字符串为ääää。我已经从 Chrome 的开发者工具中复制了它——>网络:

<request><space>2080878</space><input>ääää</input></request>

我该如何解决这个问题并防止变音符号被这样“扭曲”?

4

1 回答 1

0

我认为这应该解决它:

  1. 以 UTF-8 编码形式保存您的 JavaScript。如果您使用“记事本”,请从菜单中使用“文件->另存为”,然后在“保存”按钮的左下方选择“UTF-8”作为编码。原因:输入=“äää”;必须作为 UTF-8 编码字符保存到文件中。

  2. 如果从输入元素(例如 textarea、输入行)接收输入,则告诉浏览器它是以多种方式编码的 UTF-8。一种可能性是添加如下 HTTP 标头(如果这是脚本的输出(例如 PHP 或 ASP)):

    内容类型:文本/html;字符集=utf-8

  3. 如果不可能,请将 META-Tag 放入使用如下脚本的 html 文件的标题中:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  4. 将 DOCTYPE 添加到包含/执行脚本的 html 文件。原因:某些浏览器确实使用一些旧的兼容机制来解释没有 DOCTYPE 的 html,该机制假定 ISO-8859-1 编码或类似的东西。我注意到在 JavaScript 中有更糟糕的效果......所以总是在你的 HTML 文档的开头添加一个像这样的 DOCTYPE(不需要是“严格的”):

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd ">

希望有帮助;-)

于 2012-08-14T17:32:50.877 回答