close

。【文字故事】文字編解碼的由來

● 電腦還沒被發明之前,文字就只是文字,全球網際網路還沒被發明之前,文字的字符編碼,也沒那麼重要 !!

● 話說很久很久以前,電腦文字是由美國制定出來的,他們覺得一個字節(一個字節總共有256個編碼)可以囊括英語世界裡所有的字母、數字和常用特殊符號,全部只用了前0~127個編碼,這就是美國發表的【ASCII 字符編解碼器】。

◆ 下圖是 ASCII 字符袋碼表 000~127個編碼(這就是我們熟知的 內碼表)。

image
圖片來源:https://zhuanlan.zhihu.com/p/38333902

● 後來在歐洲的電腦文字建構時,法國人說:我需要在小寫字母加上變音符號(如:é),德國人說:我也要加幾個字母(Ä ä、Ö ö、Ü ü、ß)。於是,歐洲人就將【ASCII 字符編解碼器】沒用完的編碼(128~255)用在歐洲自己特有的符號編碼,後來稱之為【擴展字符集】。

◆ 下圖是 ASCII 字符袋碼表 128~255個編碼(這就是我們熟知的 內碼表)。

image
圖片來源:https://zhuanlan.zhihu.com/p/38333902

● 等到大中華電腦文字建構時,256個字符編碼哪夠 ?我泱泱大中華,漢字起碼也得N多萬吧,就連小學生都得要求掌握兩三千字。中國大陸最後拍板:一個字節不夠,那我們就用多個字節來為漢字編碼吧,但是,當年中國大陸還那麼窮,字節那麼貴,三個字節傷不起,那就二字節吧,先給常用的幾千漢字編個碼,等以後國家強盛了人民富裕了,咱再擴展唄---,這就是中國大陸發表的【GB2312 字符編解碼器】。香港及台灣同胞一看,竟喊出動物羊駝的小名【草泥馬】,怎麼只有簡體字,還讓不讓我們這些使用繁體字的有一條活路呢 ? 於是港台同胞也自己弄了個繁體字編碼---大五碼【Big-5 字符編解碼器】。

● 當時,同一時間,全世界每個國家,也正在為自己的文字編碼傷腦筋。

● 最後,微軟發話了:顧客就是上帝啊,你們的編碼我都得滿足啊,這樣吧,賣給美國國內的系統就【預設使用ASCII 編解碼器】吧,賣給中國大陸的系統就【預設使用GBK編解碼器】吧,賣給韓國人的系統就【預設使用EUC-KR編解碼器】,...但是為了避免你們誤會我微軟賣給你們的系統功能有差異,我就統一把你們的預設編碼都顯示成【ANSI 編解碼器】吧。---本故事純屬虛構,但「ANSI 編碼」確實只存在於Windows系統。
● 轉載自【每日頭條】資料來源:KKNews https://kknews.cc/zh-tw/code/442kg42.html
原文網址:https://kknews.cc/code/442kg42.html

● 補充:
◇ GBK 是在 GB2312 標準 基礎上擴充後,並兼容 GB2312 的標準(好像還不是中國大陸標準),專門用來解決中文編碼的,是雙字節的,不論中英文都是雙字節的。另外,如果是外國人瀏覽你的 GBK 網頁,需要下載中文語言包才能正確顯示文字,GBK 包含全部中文字符。瀏覽 UTF-8 編碼的網頁,則不需要下載中文語言包,立即能正確顯示文字。

◇ UTF-8 是一種國際化的編碼方式,包含了世界上大部分的語種文字(簡體中文字、繁體中文字、英文、日文、韓文等語言),也兼容 ASCII 碼。UTF-8 編碼是用以解決國際上字符的一種多字節編碼,它對英文使用 8 位(即一個字節),中文使用 24 位(三個字節)來編碼。對於英文字符較多的論壇則用 UTF-8 節省空間。 UTF-8 則包含全世界所有國家需要用到的字符。

 

● ANSI = American National Standards Institute(美國國家標準學會)。
● 【ANSI 字符編碼】:它是微軟公司提出的一個名稱,不同國家相同的名稱,但實際編碼內容則不同,例如:
◇【English(US) 系統 →ANSI=實際是 ASCII 字符編碼】
◇【簡體中文 系統 →ANSI=實際是 GBK 字符編碼】
◇【繁體中文 系統 →ANSI=實際是 Big-5 字符編碼】
◇【韓文 系統 →ANSI=實際是 EUC-KR 字符編碼】。
◇【日文 系統 →ANSI=實際是 Shift JIS 字符編碼】。
◇ 用另一個角度思維,ANSI 字符編碼 是一種歷史古蹟,應該被保存而不再使用,全面使用更加先進、方便的 Unicode 字符編碼。

 

● 【Unicode】:由於字符編碼不同,電腦在不同國家之間的交流變得很困難,因為不同的編碼會解析出不同的字符,經常會出現亂碼的問題,當互聯網迅速發展,人們迫切的希望有統一的規則, 對所有國家和地區的字符進行編碼,於是 Unicode 就出現了。
◇ Unicode 字符集的編碼範圍是 0x0000 - 0x10FFFF , 可以容納一百多萬個字符, 每個字符都有一個獨一無二的編碼,也即每個字符都有一個二進制數值和它對應。但是,Unicode 只是字符集標準,UTF-8、UTF-16、UTF-32 才是真正的字符編碼使用。


● 【UTF-16】:UTF-16 = 16-bit Unicode Transformation Format 是一種針對Unicode的可變長度字元編碼。這種編碼方式比較特殊, 它將字符編碼成 2 字節 或者 4 字節,小於 0x10000 的字符, 使用 2 個字節存儲,並且是直接存儲 Unicode 碼,不用進行編碼轉換,大於 0x10FFFF 的 Unicode 碼無法用 UTF-16 編碼。


● 【UTF-16LE】:16 位 UCS 轉換格式,Big Endian 大端(最低地址存放高位位元組,符合人們的閱讀習慣)位元組順序。 


● 【UTF-16BE】:16 位 UCS 轉換格式,Little-endian 小端(最高地址存放高位位元組)位元組順序。


● 【UTF-8】:UTF-8 = 8-bit Unicode Transformation Format 是一種針對Unicode的可變長度字元編碼。由於直接使用Unicode編碼效率低下,大量浪費記憶體空間。UTF-8就是為了解決相容ASCII碼而設計,Unicode中前128個字元,使用與ASCII碼相同,這使得原來處理ASCII字元的軟體無須或只須做少部份修改【解碼】,即可繼續使用。因此,它逐漸成為電子郵件、網頁及其他儲存或傳送文字優先採用的編碼方式。

● 【具有BOM的UTF-8】: BOM 是 Byte-Order Mark 字節順序標記, 它常被用來當做標識文件是以 UTF-8、UTF-16 或 UTF-32 編碼的標記。例如:
◇ 檔案的開頭,放置 FE BB BF 字元,表示這個文字檔案是以 UTF-8 編碼。
◇ 檔案的開頭,放置 FE FF 字元,表示這個文字檔案是以 UTF-16BE 編碼。
◇ 檔案的開頭,放置 FF FE 字元,表示這個文字檔案是 UTF-16LE 編碼。

 

● 【Unicode 補完計畫】(Unicode-at-on,簡稱UAO,官方網站使用的識別系統用字是Unicode補完計畫)是台灣電腦使用者針對大五碼(Big-5)延伸的紊亂、以及微軟Code Page 950(Microsoft Windows內建的Big-5轉碼表)未收錄某些常用字(又稱缺字問題)以及缺乏對於倚天中文系統、中國海字集延伸中的簡體中文、日文假名與日文漢字支援等問題所採取的其中一種解決方案(解決缺字問題)。例如:【堃】字,在比較舊的電腦系統中,就算使用Unicode編碼,也打字不出來,【方方土】需要【造字】,安裝「Unicode補完計畫」軟體之後,大量補充常用【特殊字】減少缺字問題,需要各別【造字】的情形也大大減低。除了系統支援,使用者亦需安裝相關字型才可正確顯示文字。

◇ 要留意的是「Unicode補完計畫」不等於Unicode。當有人說「我已安裝Unicode」,通常是將「Unicode補完計畫」和Unicode混為一談。

◇ 「Unicode補完計畫」也不是用來解決軟體顯示亂碼的問題。電腦內要有相關的字型(例如支援整個Unicode漢字的字型),才能在電腦顯示器看到。因為「Unicode補完計畫」只包含編碼轉換表,並不包括字型在內。

◇ 在「Unicode補完計畫」的第2版中,字元的基本來源是參照「中國海字集」,再加上中國海字集所遺漏的簡體中文、日語和部分香港用字而成。

◇ 「Unicode補完計畫」的2.40 Alpha 3版,除了大五碼原有的符號和漢字外,共收錄了4,916個漢字及漢字偏旁、日語的半形及全形假名、俄語西里爾字母等,涵蓋了在GB 2312(不是GBK或GB 18030)、JIS X 0208之中出現的所有漢字,和香港增補字符集之中,Unicode碼落在U+4E00至U+9FA5中 (即Unicode 1.1版定義)的漢字。(因編碼空間不足的關係,並不收錄在香港增補字符集的Unicode擴充漢字)。

=======================
=======================

。解決TXT檔_開啟亂碼的方法
● 在 使用記事本APP,【編輯文字檔】後,直接按【存檔】時,預設值會以【ANSI 格式】作為編解碼格式。
● 在 使用記事本APP,【文字檔】在另存新檔時,其實可以選擇【不同的編碼】的選項,有 ANSI、UTF-16LE、UTF-16BE、UTF-8、具有BOM的UTF-8。

image

● 存檔時,【選擇哪一種的編碼】,解碼時就必須以【同一種編解碼器】才能正確解碼,否則會出現【亂碼】。
image
● 但是,有一些軟體,【只解碼一種編解碼器格式】,例如:【字幕軟體】一般都只接受【UTF-8】或【具有BOM的UTF-8】。
● 您有沒有注意到,出現【亂碼】時,一般只有【中文】有問題,英文與數字則正常。
● 由於【英文與數字】每一個字母或阿拉伯數字,只佔有一個字節大小 (就是中文所謂的半形 或 半形空格大小)。因此解碼時,幾乎很少遇到解碼問題,不容易遇到【錯亂】或【亂碼】。
● 中文:每一個字,卻佔有二個字節大小 (就是中文所謂的全形 或 全形空格大小)。因此解碼時,一旦解碼格式不對,就會出現【錯亂】或【亂碼】。如果【英文、數字、符號】也使用【全形字元】時,也會與中文一樣,要特別注意【解碼格式】。

image
=================================
=================================
。解決TXT檔_開啟亂碼的方法

● 方法一:
當您在 Windows 使用記事本 開啟TXT檔,發現中文部份是亂碼的時候。
image
 

您可以在【檔案總管】中【TXT檔】上,滑鼠右鍵選擇【開啟檔案→IE瀏覽器 Internet Explorer】。
image

然後在【IE瀏覽器】中【文字】上,滑鼠右鍵選擇【編碼→繁體中文 或 其他 簡體中文】。
image

您可以複製【IE瀏覽器】中【文字】。
image

在【記事本】上【貼上】另存新檔,文字即可正常顯示。
image

 

===============================
您可以在【檔案總管】中【TXT檔】上,滑鼠右鍵選擇【開啟檔案→Chrome瀏覽器】。
您可以在【檔案總管】中【TXT檔】上,滑鼠右鍵選擇【開啟檔案→FireFox瀏覽器】。
image

。解決TXT檔_開啟亂碼的方法
● 方法二:
在 Windows 【新版】記事本 開啟.TXT檔,發現中文部份是亂碼的時候,有新方法可以【校正它】。
image

在 Windows 【新版】記事本 開啟.TXT檔案時,發現多了【編碼】的選項,雖然是【自動偵測編解碼】,但還是有不正確的情況發生率還頗高的。
image

在 Windows 【新版】記事本 開啟.TXT檔案時,發現多了【編碼】的選項,可以選擇【不同的編碼】,來確保【正確格式開啟】。
image
● 終於選擇【正確格式開啟】。
image

小吳老師 整理

 

arrow
arrow
    全站熱搜

    小吳老師 發表在 痞客邦 留言(0) 人氣()