TextEncoder, TextDecoder 转换
JavaScript TextEncoder 将字串转换为位元组
JavaScript TextEncoder 将字串 String 转换成 UTF-8 的 Unit8Array 位元组 Bytes, ArrayBuffer。预设使用 UTF-8 编码。
TextEncoder.encoding 只读 DOMString 使用的编码算法的名称。只会返回 "utf-8"。JavaScript 内建的全域物件提供 encode 方法,可以将一个字串转换为一个 Uint8Array 物件,也就是 8 位元无号整数的阵列。TextEncoder 方法预设使用 UTF-8 编码,也是目前最常见的字元编码方式,可以将字串转换为位元组阵列,运用于加密、压缩和二进位资料的处理。
let strExample = "字串转换";
let textEncoder = new TextEncoder();
let enResult = textEncoder.encode(strExample);
console.log(enResult);
Uint8Array(12) [ 229,173,151,228,184,178,232,189,137,230,143,155 ]
TextDecoder 将位元组转换为字串
TextDecoder 接口文本解码器,将 Unit8Array (0 to 255) 位元组 Bytes 转换成 UTF-8 的 String 字串。
预设使用 UTF-8 编码。可选择其他编码,一个 TextDecoder 构造解码器只支持一种特定文本编码,例如 utf-8、utf-16le、big5、windows-1251、iso-8859-2、iso-2022-jp、shift-jis 等等。
let textDecoder = new TextDecoder();
console.log(textDecoder.encoding); // utf-8 预设值
let textDecoder = new TextDecoder("windows-1251");
console.log(textDecoder.encoding); // windows-1251
let textDecoder = new TextDecoder();
let textBytes = [229,173,151,228,184,178,232,189,137,230,143,155];
let uint8array = new Uint8Array(textBytes);
let deResult = textDecoder.decode(uint8array);
console.log(deResult);
字串转换
Uint16Array 使用 Unicode (UTF-16)
JavaScript TextDecoder 使用 utf-16le 编码,使用 charCodeAt() 取得字串上每一个字的 Unicode (UTF-16) 编码,
对应 Uint16Array (0 to 65535) ArrayBuffers 阵列与群集。
let stringCodes = [];
let strExample = "字串转换";
for (let i = 0; i < strExample.length; i++) {
stringCodes.push(strExample.charCodeAt(i));
}
console.log(stringCodes);
Array(4) [ 23383, 20018, 36681, 25563 ]
let textDecoder = new TextDecoder("utf-16le");
let textBytes = [23383, 20018, 36681, 25563];
let uint16array = new Uint16Array(textBytes);
let deResult = textDecoder.decode(uint16array);
console.log(deResult);
字串转换
TextEncoder, TextDecoder UTF-8 转换
使用 Alt + Click 可以清除栏位的内容。
ASP.NET Encoding 字元编码
ASP.NET 使用 GetBytes() 将一组 UTF8 字元转换成位元组序列的处理接口。使用 GetChars() 解码是将编码位元组序列转换成一组 UTF8 字元的接口。支援编码有 Unicode 字元值、字码页 65001、也可以透过属性取得 Unicode 详细查阅 .NET 编码清单列出支援的编码方式。这里只尝试对应 JavaScript 的结果是否相同。
GetBytes(String) 转换成 Byte 位元组
Dim strExample As String = "字串转换"
Dim toBytes() As Byte = Encoding.UTF8.GetBytes(strExample)
For i = 0 To toBytes.Length - 1
Response.Write(toBytes(i) & ", ")
Next
229,173,151,228,184,178,232,189,137,230,143,155,
GetChars(Byte[], Int32, Int32) 将位元组转换为 String 字串
Dim UTF8Decoder As Encoding = Encoding.GetEncoding("UTF-8")
Dim byteArray() As Byte = { 229,173,151,228,184,178,232,189,137,230,143,155 }
Dim deChars As Char() = UTF8Decoder.GetChars(byteArray, 0, byteArray.Length)
Response.Write(deChars)
字串转换
GetCharCount() 解码位元组序列所产生的「字元数量」
Dim charCount As UInteger = UTF8Decoder.GetCharCount(byteArray, 0, byteArray.Length)
4
使用 Convert.ToUInt16() 对应 Uint16Array (0 to 65535) ArrayBuffers 阵列与群集。
For Each Item In deChars
Response.Write(Convert.ToUInt16(Item) & ", " )
Next Item
23383, 20018, 36681, 25563,
如果上述 For Each... Next 再加上 ChrW() 则又可以返回字元。
For Each Item In deChars
Response.Write(ChrW(Convert.ToUInt16(Item)) & ", " )
Next Item
Encoding 字元编码属性
Dim enUnicode As Encoding = Encoding.Unicode
Dim enUnicode As Encoding = Encoding.GetEncoding("UTF-8")
EncodingName 取得目前编码方式的文字描述 (Human-Readable) 是指人可以自然阅读的数据描述。
enUnicode.EncodingName = Unicode (UTF-8)
HeaderName 取得可以与邮件代理程式标头标籤一起使用的目前编码方式名称。
enUnicode.HeaderName = utf-8
WebName 若要取得目前的编码方式,请取得向 Internet Assigned Numbers Authority (IANA) 註册的名称。
enUnicode.WebName = utf-8
IsBrowserSave 取得值,指出浏览器用户端是否可以使用目前的编码方式来储存内容。
enUnicode.IsBrowserSave = True
IsBrowserDisplay 取得值,指出浏览器用户端是否可以使用目前的编码方式来显示内容。
enUnicode.IsBrowserDisplay = True
IsSingleByte 取得值,指出目前的编码方式是否使用单一位元组字码指标。
enUnicode.IsSingleByte = False
WindowsCodePage 请取得最能符合目前编码方式的 Windows 作业系统字码页。
enUnicode.WindowsCodePage = 1200
CodePage 取得目前 Encoding 的字码页识别项。
enUnicode.CodePage = 65001
CodePage 页码
页码是字元编码的别名,取得编码方式的字码页识别项。
CodePage | Name | IsBrowserDisplay | IsBrowserSave | IsMailNewsDisplay | IsMailNewsSave | IsSingleByte | IsReadOnly |
---|---|---|---|---|---|---|---|
37 | IBM EBCDIC (美国-加拿大) | False | False | False | False | True | True |
437 | OEM 美国 | False | False | False | False | True | True |
500 | IBM EBCDIC (国际) | False | False | False | False | True | True |
708 | 阿拉伯文 (ASMO 708) | True | True | False | False | True | True |
720 | 阿拉伯文 (DOS) | True | True | False | False | True | True |
737 | 希腊文 (DOS) | False | False | False | False | True | True |
775 | 波罗的海文 (DOS) | False | False | False | False | True | True |
850 | 西欧语系 (DOS) | False | False | False | False | True | True |
852 | 中欧语系 (DOS) | True | True | False | False | True | True |
855 | OEM 斯拉夫文 | False | False | False | False | True | True |
857 | 土耳其文 (DOS) | False | False | False | False | True | True |
858 | OEM 多语系拉丁文 I | False | False | False | False | True | True |
860 | 葡萄牙文 (DOS) | False | False | False | False | True | True |
861 | 冰岛文 (DOS) | False | False | False | False | True | True |
862 | 希伯来文 (DOS) | True | True | False | False | True | True |
863 | 加拿大法文 (DOS) | False | False | False | False | True | True |
864 | 阿拉伯文 (864) | False | False | False | False | True | True |
865 | 北欧字母 (DOS) | False | False | False | False | True | True |
866 | 斯拉夫文 (DOS) | True | True | False | False | True | True |
869 | 希腊文,现代 (DOS) | False | False | False | False | True | True |
870 | IBM EBCDIC (多语系拉丁文 2) | False | False | False | False | True | True |
874 | 泰文 (Windows) | True | True | True | True | True | True |
875 | IBM EBCDIC (希腊现代) | False | False | False | False | True | True |
932 | 日文 (Shift-JIS) | True | True | True | True | False | True |
936 | 简体中文 (GB2312) | True | True | True | True | False | True |
949 | 韩文 | True | True | True | True | False | True |
950 | 繁体中文 (Big5) | True | True | True | True | False | True |
1026 | IBM EBCDIC (土耳其拉丁文 5) | False | False | False | False | True | True |
1047 | IBM 拉丁文 1 | False | False | False | False | True | True |
1140 | IBM EBCDIC (美国-加拿大-欧洲) | False | False | False | False | True | True |
1141 | IBM EBCDIC (德国-欧洲) | False | False | False | False | True | True |
1142 | IBM EBCDIC (丹麦-挪威-欧洲) | False | False | False | False | True | True |
1143 | IBM EBCDIC (芬兰-瑞典-欧洲) | False | False | False | False | True | True |
1144 | IBM EBCDIC (义大利-欧洲) | False | False | False | False | True | True |
1145 | IBM EBCDIC (西班牙-欧洲) | False | False | False | False | True | True |
1146 | IBM EBCDIC (英国-欧洲) | False | False | False | False | True | True |
1147 | IBM EBCDIC (法国-欧洲) | False | False | False | False | True | True |
1148 | IBM EBCDIC (国际-欧洲) | False | False | False | False | True | True |
1149 | IBM EBCDIC (冰岛-欧洲) | False | False | False | False | True | True |
1200 | Unicode | False | True | False | False | False | True |
1201 | Unicode (位元组由大到小) | False | False | False | False | False | True |
1250 | 中欧语系 (Windows) | True | True | True | True | True | True |
1251 | 斯拉夫文 (Windows) | True | True | True | True | True | True |
1252 | 西欧语系 (Windows) | True | True | True | True | True | True |
1253 | 希腊文 (Windows) | True | True | True | True | True | True |
1254 | 土耳其文 (Windows) | True | True | True | True | True | True |
1255 | 希伯来文 (Windows) | True | True | True | True | True | True |
1256 | 阿拉伯文 (Windows) | True | True | True | True | True | True |
1257 | 波罗的海文 (Windows) | True | True | True | True | True | True |
1258 | 越南文 (Windows) | True | True | True | True | True | True |
1361 | 韩文 (Johab) | False | False | False | False | False | True |
10000 | 西欧语系 (Mac) | False | False | False | False | True | True |
10001 | 日文 (Mac) | False | False | False | False | False | True |
10002 | 繁体中文 (Mac) | False | False | False | False | False | True |
10003 | 韩文 (Mac) | False | False | False | False | False | True |
10004 | 阿拉伯文 (Mac) | False | False | False | False | True | True |
10005 | 希伯来文 (Mac) | False | False | False | False | True | True |
10006 | 希腊文 (Mac) | False | False | False | False | True | True |
10007 | 斯拉夫文 (Mac) | False | False | False | False | True | True |
10008 | 简体中文 (Mac) | False | False | False | False | False | True |
10010 | 罗马尼亚文 (Mac) | False | False | False | False | True | True |
10017 | 乌克兰文 (Mac) | False | False | False | False | True | True |
10021 | 泰文 (Mac) | False | False | False | False | True | True |
10029 | 中欧语系 (Mac) | False | False | False | False | True | True |
10079 | 冰岛文 (Mac) | False | False | False | False | True | True |
10081 | 土耳其文 (Mac) | False | False | False | False | True | True |
10082 | 克罗埃西亚文 (Mac) | False | False | False | False | True | True |
12000 | Unicode (UTF-32) | False | False | False | False | False | True |
12001 | Unicode (UTF-32 位元组由大到小) | False | False | False | False | False | True |
20000 | 繁体中文 (CNS) | False | False | False | False | False | True |
20001 | TCA 台湾 | False | False | False | False | False | True |
20002 | 繁体中文 (Eten) | False | False | False | False | False | True |
20003 | IBM5550 台湾 | False | False | False | False | False | True |
20004 | TeleText 台湾 | False | False | False | False | False | True |
20005 | Wang 台湾 | False | False | False | False | False | True |
20105 | 西欧语系 (IA5) | False | False | False | False | True | True |
20106 | 德文 (IA5) | False | False | False | False | True | True |
20107 | 瑞典文 (IA5) | False | False | False | False | True | True |
20108 | 挪威文 (IA5) | False | False | False | False | True | True |
20127 | US-ASCII | False | False | True | True | True | True |
20261 | T.61 | False | False | False | False | False | True |
20269 | ISO-6937 | False | False | False | False | True | True |
20273 | IBM EBCDIC (德国) | False | False | False | False | True | True |
20277 | IBM EBCDIC (丹麦-挪威) | False | False | False | False | True | True |
20278 | IBM EBCDIC (芬兰-瑞典) | False | False | False | False | True | True |
20280 | IBM EBCDIC (义大利) | False | False | False | False | True | True |
20284 | IBM EBCDIC (西班牙) | False | False | False | False | True | True |
20285 | IBM EBCDIC (UK) | False | False | False | False | True | True |
20290 | IBM EBCDIC (日文片假名) | False | False | False | False | True | True |
20297 | IBM EBCDIC (法国) | False | False | False | False | True | True |
20420 | IBM EBCDIC (阿拉伯文) | False | False | False | False | True | True |
20423 | IBM EBCDIC (希腊文) | False | False | False | False | True | True |
20424 | IBM EBCDIC (希伯来文) | False | False | False | False | True | True |
20833 | IBM EBCDIC (韩文扩充) | False | False | False | False | True | True |
20838 | IBM EBCDIC (泰国) | False | False | False | False | True | True |
20866 | 斯拉夫文 (KOI8-R) | True | True | True | True | True | True |
20871 | IBM EBCDIC (冰岛) | False | False | False | False | True | True |
20880 | IBM EBCDIC (斯拉夫俄文) | False | False | False | False | True | True |
20905 | IBM EBCDIC (土耳其) | False | False | False | False | True | True |
20924 | IBM 拉丁文 1 | False | False | False | False | True | True |
20932 | 日文 (JIS 0208-1990 和 0212-1990) | False | False | False | False | False | True |
20936 | 简体中文 (GB2312-80) | False | False | False | False | False | True |
20949 | 韩文 Wansung | False | False | False | False | False | True |
21025 | IBM EBCDIC | False | False | False | False | True | True |
21866 | 斯拉夫文 (KOI8-U) | True | True | True | True | True | True |
28591 | 西欧语系 (ISO) | True | True | True | True | True | True |
28592 | 中欧语系 (ISO) | True | True | True | True | True | True |
28593 | 拉丁文 3 (ISO) | False | False | True | True | True | True |
28594 | 波罗的海文 (ISO) | True | True | True | True | True | True |
28595 | 斯拉夫文 (ISO) | True | True | True | True | True | True |
28596 | 阿拉伯文 (ISO) | True | True | True | True | True | True |
28597 | 希腊文 (ISO) | True | True | True | True | True | True |
28598 | 希伯来文 (ISO-Visual) | True | True | False | False | True | True |
28599 | 土耳其文 (ISO) | True | True | True | True | True | True |
28603 | 爱沙尼亚文 (ISO) | False | False | True | True | True | True |
28605 | 拉丁文 9 (ISO) | False | True | True | True | True | True |
29001 | 欧洲 | False | False | False | False | True | True |
38598 | 希伯来文 (ISO-Logical) | True | True | True | True | True | True |
50220 | 日文 (JIS) | False | False | True | True | False | True |
50221 | 日文 (JIS-Allow 1 byte Kana) | False | True | True | True | False | True |
50222 | 日文 (JIS-Allow 1 byte Kana - SO/SI) | False | False | False | False | False | True |
50225 | 韩文 (ISO) | False | False | True | False | False | True |
50227 | 简体中文 (ISO-2022) | False | False | False | False | False | True |
51932 | 日文 (EUC) | True | True | True | True | False | True |
51936 | 简体中文 (EUC) | False | False | False | False | False | True |
51949 | 韩文 (EUC) | False | False | True | True | False | True |
52936 | 简体中文 (HZ) | True | True | True | True | False | True |
54936 | 简体中文 (GB18030) | True | True | True | True | False | True |
57002 | ISCII 梵文语系 | False | False | False | False | False | True |
57003 | ISCII 孟加拉文 | False | False | False | False | False | True |
57004 | ISCII 坦米尔文 | False | False | False | False | False | True |
57005 | ISCII 泰卢固文 | False | False | False | False | False | True |
57006 | ISCII 阿萨姆文 | False | False | False | False | False | True |
57007 | ISCII 欧利亚文 | False | False | False | False | False | True |
57008 | ISCII 坎那达文 | False | False | False | False | False | True |
57009 | ISCII 马来亚拉姆文 | False | False | False | False | False | True |
57010 | ISCII 古吉拉特文 | False | False | False | False | False | True |
57011 | ISCII 旁遮普语 | False | False | False | False | False | True |
65000 | Unicode (UTF-7) | False | False | True | True | False | True |
65001 | Unicode (UTF-8) | True | True | True | True | False | True |