本文摘自PHP中文网,作者醉折花枝作酒筹,侵删。
javascript字符串转换成utf-8编码方式有:1、支持window.TextEncoder()的情况,语法“TextEncoder('utf8');”;2、利用encodeURI的编码进行替换,语法“encodeURI(字符串)”。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
实践中碰到了一个大问题,在 javascript 中,可能有一些中文字符串,我们想将其进行二进制流编码的时候,需要将其转换为 utf8 的编码。
也就是说,输入的是一个字符串:'呆滞的慢板今天挣了100块钱'。
输出的是一个字节序列:
1 2 3 | [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]
|
又或者是这一个单字节的字符串:
1 2 | "\xE5\x91\x86\xE6\xBB\x9E\xE7\x9A\x84\xE6\x85\xA2\xE6\x9D\xBF\xE4\xBB\x8A\xE5\xA4\xA9\xE6\x8C\xA3\xE4\xBA\x86100\xE5\x9D\x97\xE9\x92\xB1"
"???????????????????¤???????100???é?±"
|
经过不懈的折腾,终于搞明白了,有两种解决方案:
1. 支持 window.TextEncoder() 的情况
1 2 3 4 | function str2utf8(str) {
encoder = new TextEncoder( 'utf8' );
return encoder.encode(str);
}
|
这种返回的是一个整数数组。
2. 利用 encodeURI 的编码进行替换
原理是,如果使用 encodeURI(str),其中如果碰到中文字符之类的,就会按照 utf8 编码之后变成 %E5%91 这个样子,我们利用这个,完了之后再将 % 替换成 \x,就得到了单个字节的串。
1 2 3 | function str2utf8(str) {
return eval( '\'' +encodeURI(str).replace(/%/gm, '\\x' )+ '\'' );
}
|
3. 综合使用
于是,我们综合来定义一个兼容的方案:
1 2 3 4 5 6 7 8 9 10 11 | 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如何将字符串转为数字
javascript怎么将日期时间转为时间戳
javascript使用什么来标识
node批量下载文件到本地的方法介绍(附代码)
javascript函数的写法有哪些
es6箭头函数与function有什么区别?
使用async属性异步加载执行javascript的方法
javascript实现获取远程的html到当前页面中
javascript如何实现弹出层效果?(代码分析)
web程序员必备之 关于<script>标记的一些小知识
更多相关阅读请进入《javascript》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » javascript字符串转换成utf-8编码方式有哪些