我无法理解为什么我无法从服务器答案中获得正确的ISO-8859-1 charstet.作为遗留代码的工作,我几乎不能改变页面上的字符集编码.
我使用了JQuery调用
$.post("server-side-code", {t:ctext, i:ioff, sid:sessionid}, function(data, status) { $('#chk').append(data); });
发布使用javascript创建的textarea值:
处理请求的服务器端脚本在其顶部声明:
text/html; charset=ISO-8859-1
所以,老实说,我无法弄清楚我应该在编码方面声明什么.尽管如此,当将服务器答案放在HTML元素中时,重音字符"àèéìòù"会反弹为:"ÃÃÃÃ"ÃÃÃ"Ã"
源保存为ascii.尝试执行此操作以对要发布的变量进行基本的Html编码无法解决:
ctext = escapeHTML(ctext); function escapeHTML (str) { var div = document.createElement('div'); var text = document.createTextNode(str); div.appendChild(text); return div.innerHTML; };
有些想法?
谢谢!
我现在有一个更好的解决方案.发布和完成工作都很完美.我正在为tomcat工作,他默认处理ISO 8859的东西.
网页属性:
头部内部网页的字符集.
现在,我的所有参数都使用转义函数进行转义,之前我提供了此解决方案.
(function($) {$.fn.escape = function() { return escape(this.val());};})(jQuery);
现在,在发送ajax请求时,我将contentType设置为:
contentType : "application/x-www-form-urlencoded; charset=iso-8859-1"
最后,当在servlet或任何接收器上接收参数时,我使用此获得解码参数.
public String getHttpParameter(String name) throws Exception { String value = this.getHttpRequest().getParameter(name); return value == null || value.isEmpty() ? value : URLDecoder.decode(value,"ISO-8859-1"); }
POST和GET在IE 7和8,SAFARI,CHROME和FIREFOX中完美运行.