搜尋結果
2 天前 · 花蓮地震災情慘重 釀17死、2人失聯 天王星大樓拆除完成. 3日上午7時58分發生芮氏規模7.2地震,地震深度15.5公里,震央位於花蓮縣政府南南東方25.0 ...
2 天前 · 內地長途出行,許多人會選擇在火車臥鋪睡一晚。近日有大媽上傳影片,抱怨現在年輕人乘臥鋪「只顧自己」,紛紛掛上布簾把下鋪圍得密不透風,完全不體諒老年人攀爬困難,需要在下鋪坐坐。短片在內地引發巨大反應,網民形成兩極,年長的說新一代沒同埋心;年輕網民則抗議老年人在道德綁架 ...
3 天前 · 內地新樓樓價持續下跌,國家統計局表示,房地產市場進入階段性調整,支持樓市的措施效力正逐漸顯現。. 內地樓價跌勢持續。. 《彭博》根據國家統計局數據推算,內地七十大中城市新樓樓價,三月份按年下跌百分之2.7,按月跌幅收窄至百分之0.34。. 四大一線 ...
- 什麼是字串編碼(String Encode)?
- 電腦只認得數字
- ASCII 編碼(Ascii Code)
- Unicode(萬國碼)
- 用來表示數值的不同方式:談談進位制
- Unicode 的表示方式(U+<十六進制數值>)
- Javascript 中提供的相關函式
- 在 Javascript 字串中顯示 Unicode 字元
- 結語
- 等等,那麼 Utf-8, UTF-16, UTF-32 是什麼?
先來談談什麼是字串編碼,字串編碼簡單來說,就是把我們熟悉的文字用許多數字來代表它,你可以想像就像在當兵或坐牢的時候,大家不會直接叫你的名字,而是叫你的編號。 例如,「阿童」在坐牢時的編號是「9453」,這時候只要廣播「9453」請到司令台集合,阿童就會知道這是在叫他,就會跑到司令台來了。 這個編號是不會重複的,也就是「9453」就只會是「阿童」的編號,不會同時有其他淡水阿婆、基隆阿公的編號也一樣是 9543。
接著你可能會好奇,在監獄裡面因為方便管理、去個人化等因素,所以把人名改成編碼似乎合理,但為什麼需要把我們常用的文字也都變成編碼呢? 這是因為電腦在運算的過程中,底層都還是數字來表示的,電腦只看得懂數字,但並不認得文字符號。也就是它只看的懂「9453」這個數字,但並不認得「阿童」這些字。 由於電腦只認得數字,但是我們人類看得懂、使用的卻是文字,那麼該怎麼辦呢?於是,美國最早定義了一套文字符號的編碼,能夠將每個英文的文字符號(Symbol)都對應到一個數字,這個最早統一的規定就稱為「ASCII 編碼」。
ASCII Code 是由美國制訂,最早用來統一英文文字符號和數字間的對應關係,除了 52 個大小寫英文字母外,其中也包含了常用的符號(如 !, <, =)和特殊字元,總共定義了 127 個關係。 舉例來說,從下面的 ASCII Table 中可以看到,最上面的地方寫了 Dec 和 Char,其中 Char 就是文字符號的部分,Dec 則是用來表示該文字符號的十進位數字,在這張表中可以看到大寫英文字母的 A 對應到的編號竟是十進位的 65 號,小寫英文字母 a 則是對應到十進位的 97號: 那麼 ASCII 的編碼方式就是我們最前面提到的, Facebook 中回傳的 \\u9673\\u67cf\\u878d內容嗎?答案是:「有關但不同」。
在最前面所提到 Facebook 中回傳的 \\u9673\\u67cf\\u878d其實用的是 Unicode 編碼?Unicode 編碼又是什麼呢? 你可以發現在 ASCII 中定義了 127 個文字符號和數字之間的關係,但是那是因為英文只需要有 26 個英文字母就可以組成各是各樣的單字,但是中文或者說許多國家的語言並不是這樣阿,很明顯的 ASCII Code 不適用於所有的語言。 此外,如果不同國家使用不同的編碼來表徵自己的文字符號,又會變得非常不方便,例如,在台灣「9453」這個數字代表「阿童」,同樣的數字「9453」在美國代表「阿普」,在韓國「9453」則代表的是「金秘書」,這樣真的是非常的不方便阿!有沒有辦法讓全世界有一個共用的罪犯編號不會重複,讓 9453 就只能代表阿童呢? 於是,...
這裡我們要先稍微跳開一下文字編碼的部分,來談一下進位制。 因為電腦只認得數字(0 和 1),因此不論是 ASCII 或 Unicode,都是把數字和文字符號間做一對一的轉換,因此都可以把文字轉換成對應到的數字,但是用來表示數字的方式則有很多種,我們把它稱為進位制,像是二進制、八進制、十進制和十六進制等等。
在瞭解不同數值間的進位制轉換後,來看看一般會怎麼樣來表示 Unicode 的數值。 前面提到過Unicode 就像一個世界通用的大字典,收納了好幾百萬個全世界的文字符號,且每一個文字符號都有一個屬於自己的編號。 而一般在 Unicode 中我們會用十六進制來表示某一個文字符號的編號,並且使用 U+<十六進制數值> 的方式來表示,例如 U+0061 就表示英文字母的 a,其中的 0061 是十六進位制的數值,轉換成 10 進位的話是 97,你可以發現這和當初的 ASCII 表示相對應的: 又例如,阿童的「阿」用 Unicode 來表示是 U+963f,「童」則是可用 Unicode U+7ae5表示。
若想要查看某一個字的 Unicode 碼點,或者根據碼點反查是某一個字,在 JavaScript ES6 提供了 String.fromCodePoint(), String.prototype.codePointAt() 這兩個函式,讓你可以在 Unicode 碼點和文字符號間相互轉換。
除了透過 String.formCodePoint( ) 這種方式來將 Unicode 碼點轉換為文字符號外。在 JavaScript 中,可以直接使用 console.log() 函式就能將 Unicode 轉換成文字符號顯示出來。 其中根據不同的適用時機或場合有幾種不同的表示方式,包括: 1. 只使用到 Unicode 基本平面時 (\\u<碼點>) 2. 有使用到 Unicode 輔助平面時(\\u{ <碼點> }) 3. 只使用到 ASCII 字符時(\\x<碼點>)
在瞭解了 Unicode 的使用和轉換後相信你已經可以解碼本篇文章中最一開始的那串內容是什麼了吧? 試著用用看上面幾種不同的方法,像是 console.log() 或 String.fromCodePoint()的方法來解碼 Unicode 吧! 或者你也可以利用 str.codePointAt()編碼打造一段屬於自己圈子內的低調碼,請有興趣的捧油們一起來解碼:
透過 Unicode(萬國碼)讓所有國家的文字符號都有個唯一的碼點可以在電腦內被辨認,但是這個碼點(從 U+0000 到 U+10FFFF)要如何儲存在電腦中則不是 Unicode 要解決的,也就是說,要用什麼樣的方式才能有效的把所需的碼點存在電腦中,但又不佔據太多的容量則沒有在 Unicode 中被規範。 UTF-8, UTF-16 或 UTF-32 則都可以視為是 Unicode 實做的一種方式,它們用不同的方式來規範要如何將 Unicode 中的碼點儲存在電腦中以被使用,如果直接把整個 Unicode 代碼搬進電腦裡儲存,可能會佔用太多不必要的空間(例如,UTF-32)。 在網際網路上最常被使用的則是 UTF-8 的編碼方式,而在 JavaScript 引擎中主要支援的則是 UTF-1...
2023年8月21日 · 據路透在上海引述三位知情人稱,8月21日周一,中國主要國有銀行被發現正在積極吸收離岸人民幣現金,此舉提高了做空人民幣的成本。. 一位消息 ...
Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for. Celebrate World Heritage Day: Preserving the world's most outstanding places
5 天前 · 北京半馬拉松爆「造假」質疑!今日舉行的北京半馬,男子組由馬拉松全國紀錄保持者何傑奪冠,但在賽事末段卻出現原本領先的3名非洲選手留力「護送」何傑的詭異畫面,引發網民「放水」、「造假」質疑。 北京半馬今早在天安門廣場起跑,這項國際級比賽有達2萬人參賽,分男女組項目,冠軍可 ...