成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

“錕斤拷” 22 元一盒?聊聊它的前世今錕斤拷

開發(fā) 前端
在計(jì)算機(jī)底層都是用0和1進(jìn)行存儲的,ASCII編碼將所有的字母及符號進(jìn)行編碼后轉(zhuǎn)成二進(jìn)制的0和1進(jìn)行存儲,字母和符號占1個字節(jié)(即8bit),標(biāo)準(zhǔn)的ASCII碼規(guī)定最高位必須為0,因此ASCII編碼只能有128個,轉(zhuǎn)成十進(jìn)制即為0-127。

[[429464]]

不管是在工作中還是生活中,相信很多同學(xué)都被“錕斤拷”深深的毒害過,比如這樣,

這樣,

還有這樣,

那么究竟是為什么會出現(xiàn)這些奇怪的字符?接下來我們一探究竟!

ASCII編碼

在計(jì)算機(jī)底層都是用0和1進(jìn)行存儲的,ASCII編碼將所有的字母及符號進(jìn)行編碼后轉(zhuǎn)成二進(jìn)制的0和1進(jìn)行存儲,字母和符號占1個字節(jié)(即8bit),標(biāo)準(zhǔn)的ASCII碼規(guī)定最高位必須為0,因此ASCII編碼只能有128個,轉(zhuǎn)成十進(jìn)制即為0-127。標(biāo)準(zhǔn)的ASCII碼表如下:

ASCII碼表只有128個字符,對于英語來說已經(jīng)夠用了,但是世界上還有很多國家的文字各不相同,這時候就需要一個更加全面的編碼出現(xiàn)。

Unicode(又稱統(tǒng)一碼、萬國碼、單一碼)是計(jì)算機(jī)科學(xué)領(lǐng)域里的一項(xiàng)業(yè)界標(biāo)準(zhǔn)。它為每種語言中的每個字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼。在表示一個Unicode的字符時,通常會用“U+”然后緊接著一組十六進(jìn)制的數(shù)字來表示這個字符。

UTF-8與GBK

UTF-8是針對Unicode的一種可變長度字符編碼。它可以用來表示Unicode標(biāo)準(zhǔn)中的任何字符,而且其編碼中的第一個字節(jié)仍與ASCII相容。UTF-8使用一至四個字節(jié)為每個字符進(jìn)行編碼。常用的漢字采用3個字節(jié)進(jìn)行編碼。

因?yàn)閁TF-8是針對Unicode的一種可變長度的字符編碼,所以它包含了世界上所有字符的編碼,對于那些早錄入的字符,就會優(yōu)先使用1、2個字節(jié)來存儲,對于遲錄入的字符存儲占用的字節(jié)就會大一些,這樣,那些遲錄入的字符存儲空間就會很大。

對于一個中文網(wǎng)站,實(shí)際上并不需要其他國家的文字出現(xiàn),但是中國漢字用UTF-8進(jìn)行編碼,大多數(shù)卻占用了3個字節(jié)甚至更多字節(jié),這樣就造成了不必要的存儲浪費(fèi)。為了解決這種問題,中華人民共和國全國信息技術(shù)標(biāo)準(zhǔn)化技術(shù)委員會制定了一套GB系列的編碼,最常用的就是GBK了。

GBK編碼英文使用單字節(jié)編碼,完全兼容ASCII字符,漢字使用了兩個字節(jié)進(jìn)行編碼,其編碼范圍從0x8140(表示16進(jìn)制)至0xFEFE(剔除xx7F),共23940個碼位,共收錄了21003個漢字,圖形符號 883 個。

為什么要剔除xx7F,因?yàn)樗鼘?yīng)的ASCII碼表是DEL,意味著要向后刪除一個字符。

為什么會出現(xiàn)“錕斤拷”

Unicode編碼一直持續(xù)在收錄各種字符,這就可能會出現(xiàn)各種操作系統(tǒng)支持的Unicode字符不一樣。這也就會導(dǎo)致A上的一個用Unicode編碼的字符,在B上就會出現(xiàn)無法顯示的情況。為了避免這種情況,在Unicode中定義了一個特殊字符?,它的Unicode編碼為0xFFFD。

假如A支持特殊字符?,但是B并不支持這個?,那么在B中將會用?來代替。

這個字符用UTF-8編碼后,十六進(jìn)制表示為0xEF 0XBF 0XBD。如果連續(xù)出現(xiàn)兩個?符號,那么用UTF-8編碼后的十六進(jìn)制則表示為0xEF 0XBF 0XBD 0xEF 0XBF 0XBD,這時候再轉(zhuǎn)碼成GBK,因?yàn)镚BK中用兩個字節(jié)表示一個字符,那么上述的字符就成了錕(0xEFBF),斤(0xBDEF),拷(0xBFBD)。出現(xiàn)錕斤拷的原因就是UTF-8轉(zhuǎn)碼GBK的過程中出現(xiàn)了問題。當(dāng)然如果想要出現(xiàn)錕斤拷,則至少需要兩個字符出現(xiàn)亂碼。

接下來,我們直接用代碼來看一下效果:

  1. @Test 
  2. void contextLoads() throws Exception { 
  3.     String str = "�"
  4.     String strCode = new String(str.getBytes("UTF-8"), "GBK"); 
  5.     System.out.println(strCode); 

運(yùn)行結(jié)果為錕?,前面也說了如果想要出現(xiàn)錕斤拷,則至少需要為兩個字符,現(xiàn)在再修改一下代碼。

  1. @Test 
  2. void contextLoads() throws Exception { 
  3.     String str = "��"
  4.     String strCode = new String(str.getBytes("UTF-8"), "GBK"); 
  5.     System.out.println(strCode); 

運(yùn)行結(jié)果如下為錕斤拷。

如果以后再遇到錕斤拷,不要慌,它一定是UTF-8在轉(zhuǎn)換GBK編碼的時候出現(xiàn)了問題?,F(xiàn)在看來GBK編碼雖然減少了內(nèi)存的浪費(fèi),但是也帶來了不少問題。

本文轉(zhuǎn)載自微信公眾號「Java旅途」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java旅途公眾號。

 

責(zé)任編輯:武曉燕 來源: Java旅途
相關(guān)推薦

2021-01-26 05:13:12

錕斤拷String 二進(jìn)制

2019-09-06 09:37:06

亂碼字符編碼Unicode

2021-05-31 20:06:57

網(wǎng)元協(xié)議網(wǎng)關(guān)

2019-11-18 15:07:54

編程語言C#

2009-05-12 11:38:32

互聯(lián)網(wǎng)

2024-06-14 09:32:12

2022-03-04 08:45:11

Docker開源Linux

2022-12-01 07:36:40

2022-06-28 18:47:38

WiFi5G

2022-09-14 21:15:44

互聯(lián)網(wǎng)存儲技術(shù)

2009-03-20 08:18:18

北師大網(wǎng)上求職

2020-09-22 16:53:59

戴爾

2010-11-22 11:08:13

2011-08-04 14:22:36

打印機(jī)行情

2020-10-26 14:26:26

計(jì)算器互聯(lián)網(wǎng)電子

2012-05-01 08:18:25

華為

2011-08-09 19:42:12

投影機(jī)評測

2009-02-10 09:21:02

2009-06-26 10:07:16

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲成人一级 | 日韩精品一区二区三区 | 一级aaaaaa毛片免费同男同女 | 欧美一区二 | 久久九| 国产一级一级毛片 | 亚洲精品二区 | 国产一区二区在线91 | 久久福利 | 久久久激情 | 草久网| 中文字幕在线不卡 | 9久久精品| 精品一区二区三区四区视频 | 色综合99 | 97精品超碰一区二区三区 | 毛片网在线观看 | 欧美自拍第一页 | 日韩精品一区二区三区中文字幕 | 欧美一级片久久 | 亚洲黄色一区二区三区 | 精品国产乱码久久久久久图片 | 一区二区三区av夏目彩春 | 精品在线免费观看视频 | 国产一级片在线观看视频 | 日韩综合 | 国产一级电影在线观看 | 一区二区三区四区在线 | 亚洲一区中文字幕在线观看 | 国产精品久久久久aaaa九色 | 青青久久 | 粉嫩一区二区三区国产精品 | 久久综合一区 | 一区二区三区四区国产 | 一级黄片一级毛片 | 日韩一区三区 | 亚洲欧美在线视频 | 日韩二区三区 | 久久精品1 | 亚洲欧美日韩精品久久亚洲区 | 九九热免费看 |