javascript文字列でutf 8符号化を行う方法(転)
5548 ワード
実際には大きな問題に遭遇しました.javascriptには中国語の文字列があります.私たちはそれをバイナリストリーム符号化するとき、utf 8の符号化に変換したいです.
つまり、入力された文字列は
出力はバイトのシーケンスです.
1.
2.
そこで、統合して、互換性のあるスキームを定義します.
原文のリンク:http://www.huangwenchao.com.cn/2015/09/javascript-utf8-encoding.html【javascript文字列でutf 8を符号化する方法】
転載先:https://www.cnblogs.com/zhangdaicong/p/7696738.html
つまり、入力された文字列は
' 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)
を使用すると、中国語の文字などに触れると、utf 8符号化された後に%E5%91
という形になります.これを利用して、終わったら%
を\x
に置き換えると、1バイトのシリアルが得られます.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')+'\''); }
【転載は添付してください】これを功徳として、返送したいです.原文のリンク:http://www.huangwenchao.com.cn/2015/09/javascript-utf8-encoding.html【javascript文字列でutf 8を符号化する方法】
転載先:https://www.cnblogs.com/zhangdaicong/p/7696738.html