jQuery ajax - 变音字符编码

时间:2012-06-08 05:38:43

标签: 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”属性的 input 字符串中存在变音字符,那么这些字符在被发送到服务器之前会被转换为其他一些奇怪的组合,尽管UTF- 8个字符编码。 例如,Bellow是提交给服务器的数据,输入字符串为ääää。我从Chrome的开发者工具中复制了它 - &gt;网络:

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

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

1 个答案:

答案 0 :(得分:0)

我认为这应该解决它:

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

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

    Content-Type:text / html;字符集= UTF-8

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

    &lt; meta http-equiv =“Content-Type”content =“text / html; charset = utf-8”&gt;

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

    &lt;!DOCTYPE HTML PUBLIC“ - // W3C // DTD HTML 4.01 // EN”     “http://www.w3.org/TR/html4/strict.dtd” &GT;

  5. 希望有所帮助; - )