我使用 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>
如何解决这个问题并防止变音符号像这样被“扭曲”?
最佳答案
我认为这应该可以解决它:
以 UTF-8 编码形式保存 JavaScript。如果您使用“记事本”,请从菜单中使用“文件->另存为”,然后在“保存”按钮的右下角选择“UTF-8”作为编码。 原因:输入=“äää”;必须以 UTF-8 编码字符保存到文件中。
如果从输入元素(例如文本区域、输入行)接收输入,则通过多种方式告诉浏览器它是 UTF-8 编码的。一种可能是添加如下所示的 HTTP header (如果这是脚本(例如 PHP 或 ASP)的输出):
内容类型:text/html;字符集=utf-8
如果不可能,请将 META-Tag 放入使用脚本的 html 文件的 header 中,如下所示:
<meta http-equiv="Content-Type"content="text/html; charset=utf-8">
将 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/