我是靠谱客的博主 忧心宝马,最近开发中收集的这篇文章主要介绍javascript字符串转换成utf-8编码方式有哪些,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本教程操作环境: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编码方式有哪些所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部