自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊前端字符編碼:ASCII、Unicode、Base64、UTF-8、UTF-16、UTF-32

開發(fā) 前端
我們知道,計(jì)算機(jī)只能理解二進(jìn)制,二進(jìn)制語言是面向機(jī)器的語言,直接來自計(jì)算機(jī)的指令系統(tǒng),由 0 和 1 組成。它使用整數(shù)來編碼數(shù)字(0-9)、大寫字母(A-Z)、小寫字母(A-Z)以及分號(hào)(;)、感嘆號(hào)(?。┑?。

大家好,我是 CUGGZ。

在開發(fā)過程中經(jīng)常會(huì)遇到各種各樣的編碼,常見的有 UTF-8、Unicode、Base64 等,但前端世界遠(yuǎn)不止這三種編碼,本文就來介紹前端常見的編碼以及其使用方式。

ASCII

我們知道,計(jì)算機(jī)只能理解二進(jìn)制,二進(jìn)制語言是面向機(jī)器的語言,直接來自計(jì)算機(jī)的指令系統(tǒng),由 0 和 1 組成。它使用整數(shù)來編碼數(shù)字(0-9)、大寫字母(A-Z)、小寫字母(A-Z)以及分號(hào)(;)、感嘆號(hào)(?。┑?。例如,97 用于表示“a”,33用于表示“!”,這樣就可以方便地存儲(chǔ)在內(nèi)存中。

互聯(lián)網(wǎng)的早期只有英文字母,所以不需要擔(dān)心任何其他字符,ASCII 就可以適用于這種情況的字符編碼,例如 bits 對(duì)應(yīng)的二進(jìn)制如下:

01100010 01101001 01110100 01110011
b i t s

ASCII  全稱為 American Standard Code for Information Interchange,即“美國信息交換標(biāo)準(zhǔn)代碼”,是基于拉丁字母的一套電腦編碼系統(tǒng)。ASCII 至今為止共定義了 128 個(gè)字符:

圖片

ASCII 可以分為兩類:

  • 可顯示字符:編號(hào)范圍是32-126(0x20-0x7E),共 95 個(gè)字符:

圖片

  • 控制字符:編號(hào)范圍是0-31和127(0x00-0x1F和0x7F),共 33 個(gè)字符:

圖片

可以看到,ASCII 碼實(shí)際上是一種映射,是從二進(jìn)制字符到字母數(shù)字字符的映射。所以當(dāng)計(jì)算機(jī)收到以下二進(jìn)制文件時(shí):

01001000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100

使用 ASCII 碼進(jìn)行映射,上面的二進(jìn)制編碼可以翻譯成“Hello world”。

“K” 在ASCII 中是75,可以將它轉(zhuǎn)化為二進(jìn)制,將 75 除以 2,然后繼續(xù),直到得到 0。如果除法不準(zhǔn)確,則加 1 作為余數(shù):

75 / 2 = 37 + 1
37 / 2 = 18 + 1
18 / 2 = 9 + 0
9 / 2 = 4 + 1
4 / 2 = 2 + 0
2 / 2 = 1 + 0
1 / 2 = 0 + 1

現(xiàn)在,提取“余數(shù)”并以相反的順序放入它們:

1101001 => 1001011

因此,在 ASCII 中,“K”在二進(jìn)制中被編碼為 1001011。

ASCII 的主要缺點(diǎn)是它只能表示 256 個(gè)不同的字符,因?yàn)樗荒苁褂?8 位。ASCII 不能用于對(duì)世界各地發(fā)現(xiàn)的許多類型的字符進(jìn)行編碼。但是如果想在計(jì)算機(jī)上使用中文、俄語、日語時(shí),就需要一個(gè)不同的編碼標(biāo)準(zhǔn)。Unicode 進(jìn)一步擴(kuò)展為 UTF-8、UTF-16、UTF-32以對(duì)各種類型的字符進(jìn)行編碼。因此,ASCII 和 Unicode 之間的主要區(qū)別就是用于編碼的位數(shù)。下面就來看看 Unicode 的概念以及使用方式。

Unicode

Unicode 是另一種字符編碼,它仍然是:位查找 -> 字符,由 Unicode Consortium 維護(hù),其負(fù)責(zé)制定國際使用的軟件標(biāo)準(zhǔn)。IT 行業(yè)將 Unicode 標(biāo)準(zhǔn)化以對(duì)計(jì)算機(jī)和其他電子和通信設(shè)備中的字符進(jìn)行編碼和表示。

Unicode 由許多代碼點(diǎn)組成(將來自世界各地的大量字符映射到所有計(jì)算機(jī)都可以引用的鍵),代碼點(diǎn)的集合稱為字符集,這就是 Unicode。開發(fā) Unicode 的目標(biāo)是通過一種獨(dú)特的方式將世界上任何語言的任何字符或符號(hào)轉(zhuǎn)換成唯一的數(shù)字??梢栽?unicode.org 上查找任何 Unicode 字符的編號(hào),包括表情符號(hào)!

Unicode 看起來像這樣:

U+0048:拉丁文大寫字母 H
U+0065:拉丁文小寫字母 e
U+006C:拉丁文小寫字母 l
U+006C:拉丁文小寫字母 l
U+006F:拉丁文小寫字母 o
U+0020:空格 [SP]
U+0057:拉丁文大寫字母 W
U+006F:拉丁文小寫字母 o
U+0072:拉丁文小寫字母 r
U+006C:拉丁文小寫字母 l
U+0064:拉丁文小寫字母 d

可以使用以下格式在 JavaScript 字符串中添加 unicode 序列 \uXXXX:

const s1 = '\u00E9' //é

可以通過組合兩個(gè) unicode 序列來創(chuàng)建一個(gè)序列:

const s2 = '\u0065\u0301' //e?

雖然兩個(gè)字符串的結(jié)果都是 e?,但它們是兩個(gè)不同的字符串,并且長度也不相同:

圖片

ASCII 和 Unicode 是兩種流行的編碼方案。ASCII 編碼符號(hào)、數(shù)字、字母等,而 Unicode 編碼來自不同語言、字母、符號(hào)等的特殊文本,可以說 ASCII 是 Unicode 編碼方案的一個(gè)子集。它們兩個(gè)的區(qū)別如下:

圖片

UTF-8、UTF-16、UTF-32

(1)基本概念

UTF 是 Unicode 編碼方式的一種。UTF 編碼由 Unicode 標(biāo)準(zhǔn)定義,能夠?qū)π枰拿總€(gè) Unicode 代碼點(diǎn)進(jìn)行編碼。Unicode 編碼方案根據(jù)用于對(duì)字符進(jìn)行編碼的位數(shù)進(jìn)行分類。目前使用的 Unicode 編碼方案有 UTF-7、UTF-8、UTF-16 和 UTF-32 ,分別使用 7 位、8 位、16 位和 32 位來表示字符。

那如何知道文件將使用哪種編碼呢?有一種稱為字節(jié)順序標(biāo)記(BOM,即 Byte Order Mark) 的東西,也稱為編碼簽名。BOM是文件開頭的一個(gè)兩字節(jié)標(biāo)記,用于標(biāo)識(shí)文件是采用哪種格式的編碼。

UTF-8 在互聯(lián)網(wǎng)上使用最多,在 HTML5 中也被指定為文檔的首選編碼,所以下面將主要介紹 UTF-8。

圖片

UTF-8 將 0-127 的所有 Unicode 代碼點(diǎn)編碼為 1 個(gè)字節(jié)(與ASCII相同)。這意味著如果使用 ASCII 對(duì)程序進(jìn)行編碼,而用戶使用 UTF-8,將不會(huì)有任何錯(cuò)誤。1993年創(chuàng)建 UTF-8 時(shí),很多數(shù)據(jù)都是 ASCII 格式的,所以通過兼容 UTF-8,在使用前不需要對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。本質(zhì)上,ASCII 格式的文件可以被視為 UTF-8 格式,而且可以正常工作。

(2)工作原理

下面來詳細(xì)看看 UTF-8 是如何工作的,以及為什么它會(huì)根據(jù)被編碼的字符具有不同的長度。

UTF-8 以動(dòng)態(tài)方式存儲(chǔ)數(shù)字。Unicode 列表中的第一個(gè)占用 1 個(gè)字節(jié),最后一個(gè)最多占用 4 個(gè)字節(jié),如果處理的是英文文件,大多數(shù)字符可能只占用 1 個(gè)字節(jié),與 ASCII 中的相同。這是通過用不同的字節(jié)數(shù)覆蓋 Unicode 中的不同范圍來實(shí)現(xiàn)的。

例如,要編碼原始 ASCII 表中的字符(0-127),只需要 7 位,因?yàn)?27= 128。因此,可以將所有內(nèi)容存儲(chǔ)在 8 位的 1 字節(jié)中,并且仍然剩余一個(gè)空閑空間。而對(duì)于下一個(gè)范圍(128-2047),就需要 11 bits,因?yàn)?11=2048,在 UTF-8 中就是 2 個(gè)字節(jié)。

圖片

計(jì)算機(jī)在讀取 UTF-8 中以 0 開頭的內(nèi)容時(shí),就知道只需要讀取一個(gè)字節(jié)并顯示 Unicode 中 0-127 范圍內(nèi)的正確字符即可。如果遇到兩個(gè) 1,就需要讀取 2 個(gè)字節(jié),范圍為128-2047,3 個(gè) 1 在一起表示需要讀取三個(gè)字節(jié)。

圖片

(3)UTF-16、UTF-32

世界范圍內(nèi)使用的大量字符是無法全部使用 8 位表示法進(jìn)行編碼,導(dǎo)致在 Unicode 編碼下產(chǎn)生了 UTF-16 和 UTF-32 編碼格式。在解釋這些編碼格式之前,先來看看平面的概念:

Unicode 編碼中有很多很多的字符,它并不是一次性定義的,而是分區(qū)進(jìn)行定義的,每個(gè)區(qū)存放65536(216)個(gè)字符,這稱為一個(gè)平面,目前總共有17 個(gè)平面。最前面的一個(gè)平面稱為基本平面,它的碼點(diǎn)從0 — 216-1,寫成16進(jìn)制就是U+0000 — U+FFFF,那剩下的16個(gè)平面就是輔助平面,碼點(diǎn)范圍是 U+10000—U+10FFFF。

UTF-16 是 Unicode 編碼集的一種編碼形式,把 Unicode 字符集的抽象碼位映射為16位長的整數(shù)(即碼元)的序列,用于數(shù)據(jù)存儲(chǔ)或傳遞。Unicode字符的碼位需要1個(gè)或者2個(gè)16位長的碼元來表示,因此UTF-16也是用變長字節(jié)表示的。

UTF-16 編碼規(guī)則:

  • 編號(hào)在 U+0000—U+FFFF 的字符(常用字符集),直接用兩個(gè)字節(jié)表示。
  • 編號(hào)在 U+10000—U+10FFFF 之間的字符,需要用四個(gè)字節(jié)表示。

那么問題來了,當(dāng)遇到兩個(gè)字節(jié)時(shí),怎么知道是把它當(dāng)做一個(gè)字符還是和后面的兩個(gè)字節(jié)一起當(dāng)做一個(gè)字符呢?

UTF-16 編碼肯定也考慮到了這個(gè)問題,在基本平面內(nèi),從 U+D800 — U+DFFF 是一個(gè)空段,也就是說這個(gè)區(qū)間的碼點(diǎn)不對(duì)應(yīng)任何的字符,因此這些空段就可以用來映射輔助平面的字符。

輔助平面共有 220 個(gè)字符位,因此表示這些字符至少需要 20 個(gè)二進(jìn)制位。UTF-16 將這 20 個(gè)二進(jìn)制位分成兩半,前 10 位映射在 U+D800 — U+DBFF,稱為高位(H),后 10 位映射在 U+DC00 — U+DFFF,稱為低位(L)。這就相當(dāng)于,將一個(gè)輔助平面的字符拆成了兩個(gè)基本平面的字符來表示。

因此,當(dāng)我們遇到兩個(gè)字節(jié)時(shí),發(fā)現(xiàn)它的碼點(diǎn)在 U+D800 —U+DBFF之間,就可以知道,它后面的兩個(gè)字節(jié)的碼點(diǎn)應(yīng)該在 U+DC00 — U+DFFF 之間,這四個(gè)字節(jié)必須放在一起進(jìn)行解讀。

以 “??” 字為例,它的 Unicode 碼點(diǎn)為 0x21800,該碼點(diǎn)超出了基本平面的范圍,因此需要用四個(gè)字節(jié)來表示,步驟如下:

  • 首先計(jì)算超出部分的結(jié)果:0x21800 - 0x10000
  • 將上面的計(jì)算結(jié)果轉(zhuǎn)為20位的二進(jìn)制數(shù),不足20位就在前面補(bǔ)0,結(jié)果為:0001000110 0000000000
  • 將得到的兩個(gè)10位二進(jìn)制數(shù)分別對(duì)應(yīng)到兩個(gè)區(qū)間中
  • U+D800 對(duì)應(yīng)的二進(jìn)制數(shù)為 1101100000000000, 將0001000110填充在它的后10 個(gè)二進(jìn)制位,得到 1101100001000110,轉(zhuǎn)成 16 進(jìn)制數(shù)為 0xD846。同理,低位為 0xDC00,所以這個(gè)字的UTF-16 編碼為 0xD846 0xDC00

UTF-32 就是字符所對(duì)應(yīng)編號(hào)的整數(shù)二進(jìn)制形式,每個(gè)字符占四個(gè)字節(jié),這個(gè)是直接進(jìn)行轉(zhuǎn)換的。該編碼方式占用的儲(chǔ)存空間較多,所以使用較少。比如“馬” 字的 Unicode 編號(hào)是:U+9A6C,整數(shù)編號(hào)是39532,直接轉(zhuǎn)化為二進(jìn)制:1001 1010 0110 1100,這就是它的 UTF-32 編碼。

(4)指定編碼方式

如果沒有顯式指定編碼方式,瀏覽器假定任何程序的源代碼都是用本地字符集編寫的,這會(huì)因國家/地區(qū)而異,可能會(huì)出現(xiàn)意料之外的情況。因此,給 JavaScript 文檔設(shè)置字符集非常重要。那該如何指定 UTF 編碼呢?

如果使用 HTTP(或 HTTPS)獲取文件,則 Content-Type 標(biāo)頭可以指定編碼標(biāo)準(zhǔn):

Content-Type: application/javascript; charset=utf-8

如果沒有設(shè)置,可以檢查 script? 標(biāo)簽的 charset 屬性:

<script src="./app.js" charset="utf-8">

如果未設(shè)置,可以將它嵌入到 <head> 的頂部。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
</head>

注意,這兩種情況下的 charset 屬性都不區(qū)分大小。

雖然 JavaScript 源文件可以是任何類型的編碼,但 JavaScript 會(huì)在執(zhí)行之前在內(nèi)部將其轉(zhuǎn)換為 UTF-16。正如 ECMAScript 標(biāo)準(zhǔn)所說,JavaScript 字符串都是 UTF-16 序列:

當(dāng) String 包含實(shí)際文本數(shù)據(jù)時(shí),每個(gè)元素都被視為單個(gè) UTF-16 代碼單元。

Base64

(1)基本概念

Base64 也稱為 Base64 內(nèi)容傳輸編碼。Base64 是將二進(jìn)制數(shù)據(jù)編碼為 ASCII 文本。但它只使用了 64 個(gè)字符,再加上大多數(shù)字符集中存在的一個(gè)填充字符。所以它是一種僅使用可打印字符表示二進(jìn)制數(shù)據(jù)的方法。Base64 常用于在通常處理文本數(shù)據(jù)的場(chǎng)景,表示、傳輸、存儲(chǔ)一些二進(jìn)制數(shù)據(jù),包括MIME的電子郵件及XML的一些復(fù)雜數(shù)據(jù)。

Base64 編碼用于通過不能正確處理二進(jìn)制數(shù)據(jù)的介質(zhì)傳輸數(shù)據(jù)。因此,對(duì)數(shù)據(jù)進(jìn)行 Base64 編碼以確保數(shù)據(jù)完整,無需通過此介質(zhì)進(jìn)行任何修改。base 64 編碼結(jié)果形式如下:

OWRjNGJjMDY5MzVmNGViMGExZTdkMzNjOGMwZTI3ZWI==

(2)Base64 編碼

Base64 編碼會(huì)將每 3 個(gè)字節(jié)的數(shù)據(jù)翻譯成 4 個(gè)編碼字符。它將從左到右開始掃描,然后選擇代表 3 個(gè)字符的數(shù)據(jù)的前 3 個(gè)字節(jié)。這 3 個(gè)字節(jié)將是 24 位。現(xiàn)在它將把這 24 位分成四部分,每部分 6 位。然后每個(gè) 6 位組將在下表中進(jìn)行索引以得到映射的字符:

圖片

比如,有以下字符串:

ab@

它的位表示將是:

a          b        @
01100001 01100010 01000000

這些總共 24 位將被分為 4 組,每組 6 位:

011000 010110 001001 000000

它的數(shù)字表示為:

24    22     9      0
011000 010110 001001 000000

使用上面的數(shù)字索引到 base64 表中,映射結(jié)果如下:

  • 24 → Y
  • 22 → W
  • 9 → J
  • 0 → A

所以,這個(gè)字符串的base64編碼就是:

YWJA

那如果輸入的字符串不是 3 的倍數(shù)怎么辦?這種情況下,就會(huì)使用填充字符??=??。假設(shè)字符串有 4 個(gè)字符

ab@c

它的位表示將是:

a          b        @        c
01100001 01100010 01000000 01100011

前三個(gè)字節(jié)將組合在一起。最后的字節(jié)將用 4 個(gè)額外的 0 填充,以使總位可以被 6 整除:

011000 010110 001001 000000 011000 110000
24 22 9 0 24 48

使用上面的數(shù)字索引到 base64 表中,映射結(jié)果如下:

  • 24 → Y
  • 22 → W
  • 9 → J
  • 0 → A
  • 24 → Y
  • 48 → w

結(jié)果如下:

YWJAYw==

這里,每兩個(gè)額外的 0 由 = 字符表示。由于添加了 4 個(gè)額外的零,因此最后有兩個(gè) =。

(3)Base64 解碼

說完了 Base64 編碼,下面來嘗試將 base64 編碼的字符串解碼為原始字符串。以以下 Base64 字符串為例:

YWJAY2Q=

將其分組為 4 個(gè)字符一組:

YWJA 
Y2Q=

現(xiàn)在從每個(gè)組中刪除最后的 = 字符。對(duì)于剩余的字符串,將其轉(zhuǎn)換為上表中相應(yīng)的位表示形式。

Y      W       J      A     
011000 010110 001001 000000

Y 2 Q
011000 110110 010000

現(xiàn)在將其分組為一組 8 位,保留尾隨的 0:

01100001  01100010  01000000 
01100011 01100100

現(xiàn)在對(duì)于上面的每個(gè)字節(jié),根據(jù) ASCII 表分配字符:

01100001  01100010  01000000
a b @

01100011 01100100
c d

因此最終的字符串就是:ab@cd

(4)填充

那為什么要將 Base64 編碼后的字符串分成 4 個(gè)一組進(jìn)行解碼呢?就是因?yàn)樘畛??=???。填充 ??=?? 對(duì)于 base64 編碼是否有必要呢,因?yàn)樵诮獯a時(shí)又丟棄了填充。主要考慮兩種情況:

  • 發(fā)送單個(gè)字符的字符串時(shí)不需要填充;
  • 發(fā)送多個(gè)字符的字符串的 base64 編碼時(shí),填充就很重要。如果連接未填充的字符串,則將無法獲得原始字符串,因?yàn)橛嘘P(guān)添加的字節(jié)的信息將丟失。

來看下面的例子:

圖片

當(dāng)發(fā)送連接時(shí)沒有填充, 合并的 Base64 字符串將是:YQYmMZGVm,嘗試解碼它時(shí),會(huì)得到如下字符串,這是不正確的:

a&1

當(dāng)使用填充發(fā)送連接時(shí), 合并的 Base64 字符串將是:YQ==YmM=ZGVm,嘗試解碼它時(shí),會(huì)得到以下字符串,這是正確的:

abcdef

所以,當(dāng)傳輸多個(gè)字符時(shí),填充是很有必要的。

因?yàn)榛旧?Base64 在填充的情況下會(huì)將 3 個(gè)字節(jié)編碼為 4 個(gè) ASCII 字符。四個(gè) ASCII 字符中的每一個(gè)都將作為 1 個(gè)字節(jié)通過網(wǎng)絡(luò)發(fā)送。因此,最終的尺寸總是比原來的尺寸大 33.33%。因此,如果字符串的原始大小為 n 個(gè)字節(jié),則經(jīng)過 base64 編碼后的大小將為:

n * 4/3

JavaScript 編解碼

最后來看看 JavaScript 中提供的關(guān)于編解碼的方法。

(1)UTF-8

URL 只能包含標(biāo)準(zhǔn)的 ASCII 字符,所以必須對(duì)其他特殊字符進(jìn)行編碼。在 JavaScript 中,可以通過了以下方法對(duì) URL 來做 UTF-8 編碼與解碼:

  • encodeURI?、decodeURI
  • encodeURIComponent?、decodeURIComponent

這里的編碼指的就是將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為 ASCII 格式的方式,解碼反之亦然,即將 ASCII 格式轉(zhuǎn)換回原始內(nèi)容。

那 encodeURI? 和 encodeURIComponent 有什么區(qū)別呢?

  • encodeURI 用于編碼完整的 URL:

encodeURI('https://domain.com/path to a document.pdf');

// 結(jié)果:'https://domain.com/path%20to%20a%20document.pdf'

  • encodeURIComponent 用于編碼 URI 組件,例如查詢字符串:

`http://domain.com/?search=${encodeURIComponent('name=zhang san&age=19')}`;

// 結(jié)果:'http://domain.com/?search=name%3Dzhang%20san%26age%3D19'

需要注意,有 11 個(gè)字符不能使用 encodeURI? 編碼,而需要使用 encodeURIComponent 進(jìn)行編碼:

圖片

另外,decodeURI 和 decodeURIComponent 是對(duì)分別由 encodeURI 和 encodeURIComponent 編碼的字符串進(jìn)行解碼的方法。

decodeURI('https://domain.com/path%20to%20a%20document.pdf');

// 結(jié)果:'https://domain.com/path to a document.pdf'

`http://domain.com/?search=${decodeURIComponent('name%3Dzhang%20san%26age%3D19')}`;

// 結(jié)果:'http://domain.com/?search=name=zhang san&age=19'

需要注意,encodeURIComponent? 不編碼 - _ . ! ~ * ' ( )。如果要對(duì)這些字符進(jìn)行編碼,則必須將它們替換為相應(yīng)的 UTF-8 字符序列:

const encode = (str) =>
encodeURIComponent(str)
.replace(/\-/g, '%2D')
.replace(/\_/g, '%5F')
.replace(/\./g, '%2E')
.replace(/\!/g, '%21')
.replace(/\~/g, '%7E')
.replace(/\*/g, '%2A')
.replace(/\'/g, '%27')
.replace(/\(/g, '%28')
.replace(/\)/g, '%29');

解碼函數(shù)如下所示:

const decode = (str) =>
decodeURIComponent(
str
.replace(/\\%2D/g, '-')
.replace(/\\%5F/g, '_')
.replace(/\\%2E/g, '.')
.replace(/\\%21/g, '!')
.replace(/\\%7E/g, '~')
.replace(/\\%2A/g, '*')
.replace(/\\%27/g, "'")
.replace(/\\%28/g, '(')
.replace(/\\%29/g, ')')
);

(2)Base64

在JavaScript 中,可以使用 btoa()?(binary to ASCII)和 atob()(ASCII to binary)方法來做 Base64 的編碼和解碼。主要是用于 Data URIs。

下面來對(duì)字符串 HelloWorld 做 Base64 的編碼與解碼:

const encodedData = btoa('HelloWorld'); // "SGVsbG9Xb3JsZA=="
const decodedData = atob(encodedData); // "HelloWorld"

由于ASCII 無法表示中文,因此要先做 UTF-8 編碼,然后再做Base64 編碼;解碼方式為先做 Base64 解碼,再做UTF-8 解碼:

const encodedData = btoa(encodeURI('你好')); //  "JUU0JUJEJUEwJUU1JUE1JUJE"
const decodedData = decodeURI(atob(encodedData)); // "你好"


責(zé)任編輯:武曉燕 來源: 前端充電寶
相關(guān)推薦

2021-05-12 07:43:02

LinuxUnicodeUTF-8

2024-05-29 13:05:44

2020-09-21 08:56:00

GolangUnicode編碼

2016-09-23 13:07:41

JavaScript字符編碼UCS-2

2023-12-08 08:18:41

代號(hào)UnicodeUTF-8

2011-08-25 09:43:51

UTF-8中文man

2010-09-29 11:29:18

UnicodeJ2ME

2024-01-04 12:53:00

Unicode字符UTF-8

2016-11-15 14:29:14

Linux文件編碼轉(zhuǎn)換

2016-12-13 10:13:18

PHPUTF-8實(shí)踐

2011-03-07 12:31:54

Filezilla

2010-01-08 11:52:37

ibmdwDB2

2019-04-15 14:05:56

MySQLUTF-8數(shù)據(jù)庫

2009-12-17 11:45:38

Linux UTF-8

2020-09-22 09:05:45

MySQLUTF-8utf8mb4

2009-11-30 10:40:46

PHP截取utf-8字

2011-07-29 14:08:26

iPhone UTF-8 XML

2018-06-25 14:29:45

MySQLbug數(shù)據(jù)庫

2024-02-20 13:12:00

UnicodeUTF-8GB2312

2021-05-10 19:58:06

MySQLUTF-8數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)