JavaScript - Unicode:初學者的全面指南

各位有抱負的編程者,大家好!今天,我們將踏上一段令人興奮的旅程,探索JavaScript中的Unicode世界。別擔心你對編程還是新手——我將成為你的友好導遊,我們會一步一步地學習。所以,來一杯咖啡(或者如果你喜歡,來一杯茶),讓我們開始吧!

JavaScript - Unicode

什麼是Unicode?

想像一下,你試著給你在中國的筆友寫信,但你的鍵盤只有英文字母。這是多麼令人沮喪啊!這就是Unicode拯救我們的時候!

Unicode就像一本神奇的字典,為世界上每一種語言系統中的每個字符分配一個唯一的數字(稱為"編碼點")。它不僅僅是關於字母和數字——它還包括符號、表情符號,甚至是古老的文字!

例如,字母 'A' 的Unicode編碼點是 U+0041,而中文字符 '中'(意思是"中間")的編碼點是 U+4E2D。

Unicode的直覺

將Unicode視為計算機的通用語言。在Unicode出現之前,世界上的不同地區使用了不同的編碼系統,這導致了很多混亂和兼容性問題。這就像數字世界的巴別塔!

Unicode通過創建一個可以表示所有書寫系統字符的標準化系統來解決這個問題。這就像給每一種語言中的每個字符發放一張獨一的ID卡,讓世界各地的計算機都能識別。

JavaScript中的Unicode

現在,讓我們看看JavaScript是如何處理Unicode的。JavaScript使用UTF-16編碼,這意味著它可以直接表示前65536個Unicode字符(也稱為基本多語言平面或BMP)。

下面是一個JavaScript提供的用於處理Unicode的方法的小表格:

方法 描述
String.fromCharCode() 從Unicode值創建字符串
String.fromCodePoint() 從編碼點創建字符串
charCodeAt() 返回字符的Unicode值
codePointAt() 返回字符的編碼點

讓我們看一些例子來看看這些方法是如何工作的!

範例

1. 從Unicode值創建字符串

let heart = String.fromCharCode(9829);
console.log(heart); // ♥

在這個例子中,我們使用 String.fromCharCode() 來創建一個心形符號。數字9829是黑色心形牌(♥)的Unicode值。這就像告訴JavaScript:"嘿,給我ID卡號碼為9829的字符!"

2. 獲取字符的Unicode值

let str = "Hello, 世界!";
console.log(str.charCodeAt(7)); // 19990

在這裡,我們使用 charCodeAt() 來獲取字符串中索引7的字符的Unicode值(即 '世')。這就像問:"這個字符串中的第8個字符的ID卡號是多少?"

3. 處理BMP之外的字符

let emoji = "?";
console.log(emoji.codePointAt(0)); // 128640
console.log(String.fromCodePoint(128640)); // ?

對於BMP之外的字符(如許多表情符號),我們需要使用 codePointAt()String.fromCodePoint()。在這個例子中,我們使用火箭表情符號。這就像處理一個具有非常高ID號的特殊字符!

4. 正確計算字符數量

let text = "? Rainbow";
console.log(text.length); // 9
console.log([...text].length); // 8

這是一個棘手的問題!JavaScript將BMP之外的字符視為兩個字符。所以,彩虹表情符號(?)被計算為兩個字符。如果我們想把它計算為一個字符,我們可以使用展開運算符(...)將字符串拆分成字符數組。

5. Unicode轉義序列

console.log("\u{1F600}"); // ?
console.log("\u{1F64B}\u{200D}\u{2640}\u{FE0F}"); // ?‍♀️

Unicode轉義序列讓我們能在代碼中表示Unicode字符。這就像寫下ID卡號碼而不是實際字符。\u{...}語法用於所有Unicode編碼點。

結論

好了,各位!我們已經對JavaScript中的Unicode進行了一次旋風式的旅行。從理解Unicode是什麼,到看見JavaScript如何處理它,再到玩轉一些有趣的例子——我希望能夠像我一樣享受這次旅行。

記住,Unicode是我們能夠編寫出被世界各地人民在任何語言中使用軟件的原因。它是技術如何讓我們凝聚並打破障礙的美丽範例。

在你繼續編程之旅時,請繼續探索和實驗Unicode。試著用不同的語言寫信息,或者在代碼中玩轉表情符號。編程的世界是廣闊而令人興奮的,而Unicode是您進行全球溝通的護照!

編程愉快,下次見——願您的代碼沒有bug,咖啡濃郁!?☕

Credits: Image by storyset