js请求gbk接口的问题

前端是vue,后端是java,现在后端接口是gbk的,前端如何改成能够正常调用接口?尤其是请求参数如何转gbk?

网上找到了这段

1、对传入的GBK字符串,要用数据流接收,具体到angularjs中,$http 请求中需要覆盖参数responseType , responseType: "arraybuffer",


$http({
  method: "POST",
  responseType: "arraybuffer",
  url: "restcater/cenchain/findCenChain",
  data: branchlist
})
2、解析
var x = new Uint8Array(resp.data);

var str =new TextDecoder('gbk').decode(x);

已经正常识别了。
/////////////////////////////////////////////////////////
3、UTF-8提交的数据转为GBK,要引用第三方JS库

https://github.com/inexorabletash/text-encoding

<script>
  // var TextEncoderOrg = window.TextEncoder;
  // ... and deactivate it, to make sure only the polyfill encoder script that follows will be used
  window.TextEncoder = null;
</script>
<script src="lib/text-encoding/encoding-indexes.js"></script>
<script src="lib/text-encoding/encoding.js"></script>
  //获取GBk编码的int8数组 
var uint8array =  new TextEncoder("gbk",{ NONSTANDARD_allowLegacyEncoding: true }).encode(string);
 // 放入blob中准备上传
 var blob=new Blob([uint8array],{type:"text/plain"});

但实际使用UTF-8提交的数据转为GBK这个似乎没有用啊,转出来得到的uint8array 是个数组,调用接口参数还需要进行des加密,需要变成字符串,这又要怎么做呢?

阅读 2.7k
1 个回答

AJAX 请求,参数值的编码要使用 encodeURIComponent ,它只支持 UTF-8 的字节结果,无法产生 GBK 的字节结果。
form 提交,可以使用 accept-charset 属性指定编码的字节结果。(form 的话自己好像就会根据页面的 charset 来默认编码了)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题