我在chrome扩展程序上使用jQuery发送一个AJAX POST请求,但数据没有按预期到达,重音字符变得格格不入.
文字"HÄGERSTEN"变成"H"GERSTEN".
该文本在控制台等中显示正常,只有通过AJAX才能显示如上所述的其他页面.我的AJAX调用是基本的,我通过jQuery $ .ajax发送数据对象.我已尝试使用和不使用contentType,UTF-8和ISO-8859-1.没有不同.
这是我进行AJAX调用的方式:
var newValues = {name: 'HÄGERSTEN'} $.ajax({ url: POST_URL, type: 'POST', data: newValues, success: function() ... });
该newValues
对象具有更多值,但我从表单中检索它们.但是,我已尝试手动指定这些值newValues['name'] = 'ÄÄÄÄ';
,但仍会导致同样的问题.
我发送AJAX的页面的原始表单元素包含属性accept-charset="iso-8859-1"
.也许这很重要.
目标网站正在使用Servlet/2.5 JSP/2.1
.只是因为它可能会有所作为.
我认为这是一个编码问题,因为我知道这应该是因为Chrome扩展要求脚本文件是UTF-8编码的,这可能与插件运行的网站和目标AJAX页面(同一网站)冲突正在使用ISO-8859-1编码,但我不知道如何处理它.我已经尝试了几种解码/编码UTF-8到ISO-8859-1和其他技巧的方法,但没有成功.
我已经尝试使用encodeURIComponent
我的值,这只会使它们显示在显示我通过POST发送的值的表单上,例如H%C3%84GERSTEN
.
我无法访问网站服务器,无法告诉您这是否是他们身边的问题,但我不这么认为.
UPDATE
现在我已经了解POST数据必须以UTF-8发送!那么转换不是问题吗?