概述
本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
实践中碰到了一个大问题,在 javascript 中,可能有一些中文字符串,我们想将其进行二进制流编码的时候,需要将其转换为 utf8 的编码。
也就是说,输入的是一个字符串:'呆滞的慢板今天挣了100块钱'。
输出的是一个字节序列:
[229, 145, 134, 230, 187, 158, 231, 154, 132, 230, 133, 162,
230, 157, 191, 228, 187, 138, 229, 164, 169, 230, 140, 163,
228, 186, 134, 49, 48, 48, 229, 157, 151, 233, 146, 177]
登录后复制
又或者是这一个单字节的字符串:
"xE5x91x86xE6xBBx9ExE7x9Ax84xE6x85xA2xE6x9DxBFxE4xBBx8AxE5xA4xA9xE6x8CxA3xE4xBAx86100xE5x9Dx97xE9x92xB1"
"åæ»çæ
¢æ¿ä»å¤©æ£äº100åé±"
登录后复制
经过不懈的折腾,终于搞明白了,有两种解决方案:
1. 支持 window.TextEncoder() 的情况
function str2utf8(str) {
encoder = new TextEncoder('utf8');
return encoder.encode(str);
}
登录后复制
这种返回的是一个整数数组。
2. 利用 encodeURI 的编码进行替换
原理是,如果使用 encodeURI(str),其中如果碰到中文字符之类的,就会按照 utf8 编码之后变成 %E5%91 这个样子,我们利用这个,完了之后再将 % 替换成 x,就得到了单个字节的串。
function str2utf8(str) {
return eval('''+encodeURI(str).replace(/%/gm, '\x')+''');
}
登录后复制
3. 综合使用
于是,我们综合来定义一个兼容的方案:
var str2utf8 = window.TextEncoder ? function(str) {
var encoder = new TextEncoder('utf8');
var bytes = encoder.encode(str);
var result = '';
for(var i = 0; i < bytes.length; ++i) {
result += String.fromCharCode(bytes[i]);
}
return result;
} : function(str) {
return eval('''+encodeURI(str).replace(/%/gm, '\x')+''');
}
登录后复制
【推荐学习:javascript高级教程】
以上就是javascript字符串转换成utf-8编码方式有哪些的详细内容,更多请关注靠谱客其它相关文章!
最后
以上就是忧心宝马为你收集整理的javascript字符串转换成utf-8编码方式有哪些的全部内容,希望文章能够帮你解决javascript字符串转换成utf-8编码方式有哪些所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复