js gbk与UTF8 转换

来源:互联网 发布:java做贪吃蛇游戏 编辑:程序博客网 时间:2024/04/30 10:10

项目需要,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"});

0 0
原创粉丝点击