Heim  >  Artikel  >  Web-Frontend  >  Welche Codierungsmethoden gibt es zum Konvertieren von Javascript-Strings in UTF-8?

Welche Codierungsmethoden gibt es zum Konvertieren von Javascript-Strings in UTF-8?

醉折花枝作酒筹
醉折花枝作酒筹Original
2021-07-22 14:59:0021776Durchsuche

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

Welche Codierungsmethoden gibt es zum Konvertieren von Javascript-Strings in 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高级教程

Das obige ist der detaillierte Inhalt vonWelche Codierungsmethoden gibt es zum Konvertieren von Javascript-Strings in UTF-8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn