jQuery ajax - 变音字符编码

标签 jquery ajax character-encoding special-characters

我使用 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
});

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

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

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

最佳答案

我认为这应该可以解决它:

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

  2. 如果从输入元素(例如文本区域、输入行)接收输入,则通过多种方式告诉浏览器它是 UTF-8 编码的。一种可能是添加如下所示的 HTTP header (如果这是脚本(例如 PHP 或 ASP)的输出):

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

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

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

希望有帮助;-)

关于jQuery ajax - 变音字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10943575/

相关文章:

ajax - POST 请求后 jQuery AJAX 和 WCF 异常失败

javascript - jquery插件mmenu如何跳转到某个元素id

Javascript:从动态Javascript表和输入框中获取数值然后进行计算

javascript - 当用户文本进入文本框 "january, february...."时更改为 "1,2,3..."

java - 欧元符号 JNA 转换问题

c++ - QextSerialPort 的字符编码问题 (Qt/C++)

mysql - 表和列的 mysql 字符集可以不同吗?

javascript - JavaScript 幻灯片上图像之间的缓慢转换? (特别是使用 Chrome )

javascript - 预览远程链接

javascript - 强制浏览器将 XHR 响应解释为 gzip