js gbk与UTF8 转换

项目需要,JS 中调用REST接口 返回的是 GBK 字符串。这可以说是每一个新手程序员都深恶痛绝的问题了

要搞清楚编码间的关系,以及字符串底层的处理方式,不是一件容易的事,

折腾了好几天,才终于找到解决方法,也算是 精诚所至,金石为开吧

在JS 中都是使用的UTF-8,.页面上显示GBK 就是乱码。

1、对传入的GBK字符串,要用数据流接收,具体到angularjs中,$http 请求中需要覆盖参数responseTyperesponseType: "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"});




©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值