> 웹 프론트엔드 > JS 튜토리얼 > 자바스크립트 문자열을 utf-8로 변환하는 인코딩 방법은 무엇입니까?

자바스크립트 문자열을 utf-8로 변환하는 인코딩 방법은 무엇입니까?

醉折花枝作酒筹
풀어 주다: 2023-01-07 11:45:05
원래의
21841명이 탐색했습니다.

javascript字符串转换成utf-8编码方式有:1、支持window.TextEncoder()的情况,语法“TextEncoder('utf8');”;2、利用encodeURI的编码进行替换,语法“encodeURI(字符串)”。

자바스크립트 문자열을 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]
로그인 후 복사

又或者是这一个单字节的字符串:

"\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() 的情况

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(&#39;\&#39;&#39;+encodeURI(str).replace(/%/gm, &#39;\\x&#39;)+&#39;\&#39;&#39;);
}
로그인 후 복사

【推荐学习:javascript高级教程

위 내용은 자바스크립트 문자열을 utf-8로 변환하는 인코딩 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿