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 |