日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?

發(fā)布時(shí)間:2023/12/3 windows 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

先來解釋一下這三種編碼的歷史吧:

ANSI:最早的時(shí)候計(jì)算機(jī)ASCII碼只能表示256個(gè)符號(含控制符號),這個(gè)字符集表示英文字母足夠,其中,我們鍵盤上可見的符號的編碼范圍是從32到126(大小寫英文字母、數(shù)字、英文符號等)。但表示漢字、日語、韓語就不太夠用了,漢字常用字有3000多個(gè)。

但是中國人也要用電腦打字,于是,中國人就研究出來了最早的中文字符集GB2312(GBK就是后來的擴(kuò)展),GB2312的做法是,把ASC碼取值范圍的128~255這個(gè)區(qū)間挪用了一下,用兩個(gè)ASC碼表示一個(gè)漢字,這樣可用的編碼范圍用十六進(jìn)制表示就是0x8080到0xFFFF,這大概能表示一萬多個(gè)符號,足夠了。[注:實(shí)際沒用那么多,GBK的范圍是8140-FEFE]

那個(gè)時(shí)候,計(jì)算機(jī)技術(shù)還不發(fā)達(dá),各個(gè)國家搞自己的,比如臺灣,也另搞了一套,叫BIG5(俗稱:大五碼),跟大陸的也不太一樣,但方法是類似的,都是用0x80到0xFF這個(gè)區(qū)間。
然后日語(有編碼JIS)、韓語等等也各搞一套。

這些國家的編碼區(qū)間都是重疊的,但同一個(gè)漢字(比如有一些漢字同時(shí)存在于簡體、繁體、日語漢字中)有不同的編碼,很混亂是不是?但也湊合用了。編碼不同導(dǎo)致了很多麻煩,比如一個(gè)網(wǎng)頁,如果你不知道它是什么編碼的,那么你可能很難確定它顯示的是什么,一個(gè)字符可能是大陸簡體/臺灣繁體/日本漢字,但又完全是不同的幾個(gè)字。

所以如果用一些很老的軟件,可能會聽說有中文版/日文版之類的,對應(yīng)的版本只能在對應(yīng)的系統(tǒng)上運(yùn)行。

后來,這個(gè)對操作系統(tǒng)的開發(fā)實(shí)在是太困難了,因?yàn)檫@意味著不同語言的版本,都要重新編碼。于是發(fā)明了Unicode。

Unicode這個(gè)東西,就是要把地球上所有的語言的符號,都用統(tǒng)一的字符集來表示,一個(gè)編碼真正做到了唯一。

Unicode里有幾種方式:

UTF-16BE/LE:UTF-16就是Windows模式的編碼模式(Windows里說的Unicode一般都是指這種編碼),用2個(gè)字節(jié)表示任意字符,注意:英文字符也占2個(gè)字節(jié)(變態(tài)不?),這種編碼可以表示65536個(gè)字符,至于LE和BE,就是一個(gè)數(shù)值在內(nèi)存/磁盤上的保存方式,比如一個(gè)編碼0x8182,在磁盤上應(yīng)該是0x81 0x82呢?還是0x82 0x81呢?就是高位是最先保存還是最后保存的問題,前者為BE,后者為LE。

UTF-8:UTF-8則是網(wǎng)頁比較流行的一種格式:用一個(gè)字節(jié)表示英文字符,用3個(gè)字節(jié)表示漢字,準(zhǔn)確的說,UTF-8是用二進(jìn)制編碼的前綴,如果某個(gè)UTF-8的編碼的第一個(gè)字節(jié)的最高二進(jìn)制位是0,則這個(gè)編碼占1字節(jié),如果是110,則占2字節(jié),如果是1110,則占3字節(jié)……

好了,說了這么,再來研究Windows的記事本。

Windows早期(至少是95年以前的事情了)是ANSI字符集的,也就是說一個(gè)中文文本,在Windows簡體中文版顯示的是中文,到Windows日文版顯示的就不知道是什么東西了。

后來,Windows支持了Unicode,但當(dāng)時(shí)大部分軟件都是用ANSI編碼的,unicode還不流行,怎么辦?Windows想了個(gè)辦法,就是允許一個(gè)默認(rèn)語言編碼,就是當(dāng)遇到一個(gè)字符串,不是unicode的時(shí)候,就用默認(rèn)語言編碼解釋。(在區(qū)域和語言選項(xiàng)里可以改默認(rèn)語言)

這個(gè)默認(rèn)語言,在不同Windows語言版本里是不同的,在簡體中文版里,是GBK,在繁體中文版里,是BIG5,在日文版里是JIS

而記事本的ANSI編碼,就是這種默認(rèn)編碼,所以,一個(gè)中文文本,用ANSI編碼保存,在中文版里編碼是GBK模式保存的時(shí)候,到繁體中文版里,用BIG5讀取,就全亂套了。

記事本也不甘心這樣,所以它要支持Unicode,但是有一個(gè)問題,一段二進(jìn)制編碼,如何確定它是GBK還是BIG5還是UTF-16/UTF-8?記事本的做法是在TXT文件的最前面保存一個(gè)標(biāo)簽,如果記事本打開一個(gè)TXT,發(fā)現(xiàn)這個(gè)標(biāo)簽,就說明是unicode。標(biāo)簽叫BOM,如果是0xFF 0xFE,是UTF16LE,如果是0xFE 0xFF則UTF16BE,如果是0xEF 0xBB 0xBF,則是UTF-8。如果沒有這三個(gè)東西,那么就是ANSI,使用操作系統(tǒng)的默認(rèn)語言編碼來解釋。

Unicode的好處就是,不論你的TXT放到什么語言版本的Windows上,都能正常顯示。而ANSI編碼則不能。(UTF-8的好處是在網(wǎng)絡(luò)環(huán)境下,比較節(jié)約流量,畢竟網(wǎng)絡(luò)里英文的數(shù)據(jù)還是最多的)

舉例:

同樣一段中文文本(可以插入一些英文),保存成ANSI/Unicode/UTF-8,三個(gè)文件。

修改windows的默認(rèn)語言為日語之類的(WIN7的改法是:控制面板-時(shí)鐘、語言和區(qū)域-更改顯示語言-區(qū)域和語言-管理-非unicode程序語言-更改區(qū)域設(shè)置/WNIXP改法是:控制面板-區(qū)域和語言選項(xiàng)-非unicode程序語言)。

修改完要求重啟,重啟以后,再打開這三個(gè)文件,ANSI的編碼全亂了,其余兩個(gè)都正常顯示,這就是UNICODE的作用。

另外,為什么記事本、開始菜單什么的還是正確的中文呢?明明我已經(jīng)改了默認(rèn)語言了?因?yàn)樗鼈兊某绦蚓幋a也是unicode的。

要把txt發(fā)給國外的朋友或者用在非中文的操作系統(tǒng)/軟件里,那么你的編碼最好選擇unicode

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。