JavaScript中的Unicode
Unicode轉(zhuǎn)義序列。?
一些計(jì)算機(jī)硬件和軟件可能無法正確顯示、輸入或處理所有Unicode字符。為了方便編碼并支持使用較舊技術(shù)的系統(tǒng),JavaScript定義了轉(zhuǎn)義序列,允許使用僅包含ASCII字符的方式表示Unicode字符。這些Unicode轉(zhuǎn)義序列以\u開頭,后跟四個(gè)十六進(jìn)制數(shù)字(包括大寫或小寫字母A到F),或者它們可以用花括號括起來,由1到6個(gè)十六進(jìn)制數(shù)字組成。Unicode轉(zhuǎn)義序列可以出現(xiàn)在JavaScript字符串字面量、正則表達(dá)式字面量和標(biāo)識符中(但不能出現(xiàn)在語言關(guān)鍵字中)。例如,字符“é”的Unicode轉(zhuǎn)義序列是\u00E9。以下是在變量中使用此字符的三個(gè)示例:
早期版本的JavaScript只支持4位數(shù)的數(shù)值轉(zhuǎn)義序列?;ɡㄌ柊姹臼窃贓S6中引入的,以更好地支持大于16位的Unicode碼點(diǎn),如表情符號:
Unicode轉(zhuǎn)義序列也可以出現(xiàn)在注釋中,但由于注釋被忽略,注釋中的轉(zhuǎn)義序列被視為ASCII字符,不被解釋為Unicode。
(程序員的軟技能:ke.qq.com/course/6034346)
Unicode規(guī)范化。
如果在程序中使用非ASCII字符,您需要意識到Unicode允許相同字符的多種編碼形式。例如,字符串“é”可以編碼為Unicode字符\u00E9,也可以編碼為常規(guī)ASCII字符“e”后跟組合重音符\u0301。這兩種編碼在文本編輯器中可能看起來相同,但它們具有不同的二進(jìn)制表示。因此,JavaScript認(rèn)為它們是不同的,這可能導(dǎo)致問題:
Unicode標(biāo)準(zhǔn)為所有字符定義了首選編碼,并指定了規(guī)范化程序,將文本轉(zhuǎn)換為適用于比較的規(guī)范形式。JavaScript假設(shè)它解釋的源代碼已經(jīng)被規(guī)范化,并且不執(zhí)行任何規(guī)范化操作。如果您想在JavaScript程序中使用Unicode字符,請確保在您的編輯器或其他工具中使用Unicode規(guī)范化處理您的源代碼,以避免出現(xiàn)看起來相同但實(shí)際上不同的標(biāo)識符。
(程序員的軟技能:ke.qq.com/course/6034346)