Jquery 强制浏览器以ISO-8859-1而非UTF-8的形式发送post数据
我必须向无法解码UTF-8数据的服务器(使用CICS TS 2.1的IBM z/VSE)发送post请求 因此,我必须强制浏览器或javascript ajax post调用不转换为UTF-8。他通过在jqueryajax调用中设置自己的contentType,从contentType头中删除charset=UTF-8字符串,我已经成功了。所以服务器已经认为它是ISO-8859-1,他可以解码成EBCDIC。但在德国Umlaute我仍然有问题。例如“HALLÖ”。因为浏览器在发送之前仍会转换为UTF-8:Jquery 强制浏览器以ISO-8859-1而非UTF-8的形式发送post数据,jquery,ajax,post,utf-8,iso-8859-1,Jquery,Ajax,Post,Utf 8,Iso 8859 1,我必须向无法解码UTF-8数据的服务器(使用CICS TS 2.1的IBM z/VSE)发送post请求 因此,我必须强制浏览器或javascript ajax post调用不转换为UTF-8。他通过在jqueryajax调用中设置自己的contentType,从contentType头中删除charset=UTF-8字符串,我已经成功了。所以服务器已经认为它是ISO-8859-1,他可以解码成EBCDIC。但在德国Umlaute我仍然有问题。例如“HALLÖ”。因为浏览器在发送之前仍会转换为U
let data = $('#customerForm').serialize();
let url = "http://192.168.200.1:7080/cics/CWBA/mypgm";
data = data + '&action=save&segment=cusadr&lfnr=01';
$.ajax({
type: "POST",
url: url,
data: data,
contentType: "application/x-www-form-urlencoded",
success: function(data) {
console.log(data);
if (resp.code != "0000") {
app.$data.errorMsg = resp.data;
}
}
});
我怎样才能在ISO-8859-1中发布这个帖子呢?我知道这个问题是在两年前发布的,但似乎没有人后续记录这个直截了当、简单的答案。这就是答案 似乎巧合的是,就在Andi S发布这个问题的同一天,IBM公开宣布了z/VSE 6.2。z/VSE 6.2及其附带的CICS事务服务器版本(2.2版)于2017年12月1日正式发布。CICS Transaction Server 2.2版for z/VSE向CICS通道和容器API添加了UTF-8和UTF-16支持。z/VSE SOAP引擎和新的z/VSE REST引擎继承了这种支持。对于任何中间转换步骤,应该不再有任何要求 虽然z/VSE 6.1在2019年6月30日达到IBM的End of(标准)支持,但对于那些仍在运行先前版本的z/VSE和CICS的人来说,他们还没有完全准备好将所有内容移动到最新版本,可以在先前版本的同时运行CICS Transaction Server 2.2 for z/VSE,并将它们连接起来。可能最简单的方法是使用一对LPAR(或z/VM客户机),一个运行最新的CICS版本,支持UTF-8和UTF-16,充当“网关”,另一个运行CICS应用程序的互连旧版本。然后,您可以尽可能快地将程序转移到新的、更新的LPAR或z/VM客户机上,但您不必等待较旧版本的环境完全升级以支持UTF-8和UTF-16互操作性
即使您仍在运行z/VSE 6.1之前的z/VSE版本,如果需要,这种“混合CICS版本”方法也应该可以正常工作。(只要您使用的是两个/所有CICS环境都支持的“最低公分母”互连选项之一,CICS在版本之间甚至平台之间都没有特定的互连限制。)请注意,IBM在2017年初结束了“单版本收费”限制。当然,请与IBM进行仔细检查,但是运行两个或多个版本的z/VSE和CICS不应收取额外费用,直到您的程序升级到最新版本为止。在服务器上使用代理更改字符集并发出请求。找到客户端解决方案会很好。已在使用escape()进行操作。但是没有成功,我们同时在z/vse6.2上。TS和UTF8有时仍然会遇到一些问题,但还没有时间解决。目前,我正在使用通道和容器将UTF-8字符串转换为EBCDIC