强制浏览器将发布数据发送为ISO-8859-1而不是UTF-8

时间:2017-10-10 13:02:48

标签: jquery ajax post utf-8 iso-8859-1

我必须向服务器(带有CICS TS 2.1的IBM z / VSE)发送一个帖子请求,该服务器无法解码UTF-8数据。

所以我必须强制浏览器或我的javascript ajax post call不要翻译成UTF-8。我已经通过在jquery ajax调用中设置自己的contentType从内容类型头中删除了charset = UTF-8字符串。所以服务器已经认为它是ISO-8859-1,他可以解码为EBCDIC。但是随着德国的Umlaute,我仍然有问题。例如,“HALLÖ”。因为浏览器在发送之前仍然会转换为UTF-8:

        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中发帖?

1 个答案:

答案 0 :(得分:1)

我知道这个问题是2年前发布的,但是似乎没有人跟踪该简单明了的答案。所以这就是答案。...

碰巧的是,在同一天,Andi S.发表了这个问题,IBM公开宣布了z / VSE 6.2。 z / VSE 6.2及其随附的CICS Transaction Server版本(版本2.2)已于2017年12月1日全面上市。z/ VSE的CICS Transaction Server版本2.2为CICS通道和容器API添加了UTF-8和UTF-16支持。 z / VSE SOAP引擎和新的z / VSE REST引擎继承了此支持。不再需要任何中间转换步骤。

虽然z / VSE 6.1在2019年6月30日达到了IBM的(标准)终止支持,但对于仍在运行z / VSE和CICS的先前版本的人,他们还没有准备好将所有内容迁移到最新版本,可以将CICS Transaction Server版本2.2 for z / VSE与先前的版本一起运行并将其连接起来。可能最简单的方法是拥有一对LPAR(或z / VM guest虚拟机),一个运行最新的CICS版本,并以UTF-8和UTF-16支持作为“网关”,另一个运行互连的较旧版本。 CICS应用程序。然后,您可以尽快将程序转移到新的,更新的LPAR或z / VM guest虚拟机上,但不必等待较旧的发行版环境完全升级即可支持UTF-8和UTF- 16互操作性。

即使您仍在运行z / VSE 6.1之前的z / VSE版本,也可以在需要时使用这种“混合CICS版本”方法。 (只要您使用两个/所有CICS环境都支持的“最低公分母”互连选项之一,CICS在发行版之间甚至平台之间就没有特定的互连限制。)请注意,IBM在以下方面终止了“单一版本收费”限制: 2017年初。当然要与IBM仔细检查,但是运行z / VSE和CICS的两个或多个版本的时间不长,无需花费额外的费用,直到将程序升级到最新版本为止。