字符和字節(jié)相關(guān)知識(shí)

一,首先明白什么是字符,字符集,和字符編碼的概念
1,字符:字符就是我們平時(shí)用到的字符串,比如a,b,c,d和中文和一些符號(hào),阿拉伯?dāng)?shù)字等
2,字符集:字符集就是這些字符的集合,現(xiàn)在我門(mén)聊的比較多的字符集一般都有ASCII 字符集、GB2312 字符集、Unicode 字符集,UTF-8(當(dāng)然也有-16,-32后面再介紹)等
3,字符編碼:是指對(duì)于字符集中的字符,將其編碼為特定的二進(jìn)制數(shù),因?yàn)橛?jì)算機(jī)只認(rèn)識(shí)止這些二進(jìn)制數(shù),所以必須要進(jìn)行字符編碼

那么這些字符集的區(qū)別是什么呢?
1》ASCII:這個(gè)是最早的美國(guó)人用的(因?yàn)楫?dāng)時(shí)計(jì)算機(jī)就他媽在美國(guó)有,美國(guó)人發(fā)明的嗎),這個(gè)當(dāng)時(shí)因?yàn)橹辉诿绹?guó)用,所以ASCII只有128個(gè)字符,也就是英文字母的大小寫(xiě),阿拉伯?dāng)?shù)字,一些符號(hào)(空格,下劃線什么的類(lèi)似符號(hào)),這在當(dāng)時(shí)美國(guó)是完全夠用的,但是后來(lái)計(jì)算機(jī)普及到世界,這些就不夠用了,所以下面介紹的Unicode就應(yīng)運(yùn)而生了
2》Unicode:由于原來(lái)的ASCII不夠用,所以出現(xiàn)了Unicode字符集,使用十六進(jìn)制數(shù)字,而且在數(shù)字前面加上前綴 U+,比如,大寫(xiě)字母「A」的 unicode 編碼為 U+0041,漢字「嚴(yán)」的 unicode 編碼為 U+4E25。更多的符號(hào)對(duì)應(yīng)表,可以查詢(xún) unicode.org,或者專(zhuān)門(mén)的漢字對(duì)應(yīng)表。
當(dāng)然Unicode為了兼容ASCII編碼,所以他的前128個(gè)的值和ASCII是一樣的,也就是說(shuō)Unicode表示的那些英文字符 數(shù)字 符號(hào)的值和ASCII是一樣的
3》GBK 編碼:簡(jiǎn)單介紹一下,這個(gè)是當(dāng)時(shí)全世界沒(méi)有統(tǒng)一使用的編碼方式的時(shí)候我過(guò)自己針對(duì)漢子的一套編碼方案,當(dāng)時(shí)比如日本也有自己的一套編碼方案
4》UTF-8 編碼:Unicode 看起來(lái)已經(jīng)很完美了,實(shí)現(xiàn)了大一統(tǒng)。但是,Unicode 卻存在一個(gè)很大的問(wèn)題:資源浪費(fèi),資源浪費(fèi),資源浪費(fèi)(重要的事情說(shuō)三遍),為什么會(huì)有資源浪費(fèi)呢,你想,當(dāng)時(shí)ascll編碼的這些英文字母一個(gè)字節(jié)就夠了,但是比如像一些中文需要兩個(gè)字節(jié)才能表示,一些其它語(yǔ)言甚至需要四個(gè)字節(jié)才能表示,這時(shí)我門(mén)為了能表示所有的,我門(mén)都需要開(kāi)辟出來(lái)4個(gè)字節(jié)(加入最多的就是4個(gè)字節(jié)),這時(shí)豈不是造成了大量的資源浪費(fèi),所以UTF-8 編碼有應(yīng)運(yùn)而生了。
UTF-8 編碼是一種針對(duì) Unicode 的可變長(zhǎng)度字符編碼(他的英文全程是8-bit Unicode Transformation Format),他其實(shí)就是Unicode編碼的實(shí)現(xiàn)方式之一,其實(shí)Unicode還有其它編碼實(shí)現(xiàn)標(biāo)準(zhǔn)比如UTF-8,UTF-32等,它使用一到四個(gè)字節(jié)來(lái)表示字符,例如,ASCII 字符繼續(xù)使用一個(gè)字節(jié)編碼,阿拉伯文、希臘文等使用兩個(gè)字節(jié)編碼,常用漢字使用三個(gè)字節(jié)編碼,等等。
總體來(lái)說(shuō),字符編碼是干嘛的呢, 1,就是把字符轉(zhuǎn)為計(jì)算機(jī)能認(rèn)識(shí)的二進(jìn)制數(shù)據(jù),那么他怎么轉(zhuǎn)的呢,這就是下面說(shuō)的了 2,因?yàn)樗锩婺依耸澜缢械淖址?,所以什么都可以得到正確解析,都可以得到正確的且是唯一的編碼 ,所以這也就是保證了不會(huì)出現(xiàn)亂碼,會(huì)說(shuō)你在美國(guó)“helloworld”編碼的二進(jìn)制是一個(gè)值,到了中國(guó)編碼成了另一個(gè)值,這時(shí)候解析的肯定就不正確了,所以這就是統(tǒng)一的好處啊

二,關(guān)于字節(jié)
1,字節(jié)是什么?
字節(jié)就是Byte,也就是一個(gè)計(jì)算機(jī)的計(jì)量單位
2,字節(jié)的換算
ASCII碼:一個(gè)英文字母(不分大小寫(xiě))占一個(gè)字節(jié)的空間,
一個(gè)中文漢字占兩個(gè)字節(jié)的空間。
UTF-8編碼:一個(gè)英文字符等于一個(gè)字節(jié),
一個(gè)中文(含繁體)等于三個(gè)字節(jié)。
Unicode編碼:一個(gè)英文等于兩個(gè)字節(jié),
一個(gè)中文(含繁體)等于兩個(gè)字節(jié)。
符號(hào):英文標(biāo)點(diǎn)占一個(gè)字節(jié),中文標(biāo)點(diǎn)占兩個(gè)字節(jié)。舉例:英文句號(hào)“.”占1個(gè)字節(jié)的大小,中文句號(hào)“。”占2個(gè)字節(jié)的大小

數(shù)學(xué)間的運(yùn)算
1KB=1024B;1MB=1024KB=1024×1024B(B就是字節(jié)的意思,一定嚴(yán)格區(qū)分1B和bit的區(qū)別)。1B是1字節(jié),而一字節(jié)是等于8bit的
B的取值范圍是0-255,為什么會(huì)是這個(gè)區(qū)間呢,因?yàn)?B=8bit,那么8bit最小是多少呢,最小是00000000也就是0,8bit最大是多少呢也就是11111111也就是我們平時(shí)說(shuō)的ff,也就是255

所以總的來(lái)說(shuō),你說(shuō)字符和字節(jié)的關(guān)系是什么,其實(shí)沒(méi)什么特殊的關(guān)系,也就是一個(gè)字符占多少空間的問(wèn)題,字節(jié)是空間單位,一個(gè)字符占不同大小的字節(jié)空間.

三,關(guān)于字符流和字節(jié)流
1,字符流:就是通過(guò)字符編碼編成的一堆二進(jìn)制流,這里因?yàn)樗峭ㄟ^(guò)某一種特定的編碼規(guī)范編碼的,比如utf-8,所以當(dāng)你收到的時(shí)候,可以通過(guò)該編碼規(guī)范在進(jìn)行解碼,舉個(gè)例子,現(xiàn)在咱們使用的http,http的傳輸使用的字符編碼規(guī)范就是ISO8859-1,我門(mén)收到之后使用同樣的編碼規(guī)范可以解出來(lái)相應(yīng)的數(shù)據(jù)(當(dāng)然并不是網(wǎng)絡(luò)請(qǐng)求一定用ISO8859-1)
2,字節(jié)流:字節(jié)流本身就是一堆二進(jìn)制,像我門(mén)的mp3,mp4文件,他們傳輸都是字節(jié)流,他們并不需要進(jìn)行字符編碼什么的,他們只是通過(guò)來(lái)回的傳輸,然后交給計(jì)算機(jī)識(shí)別就行了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 字符集和編碼簡(jiǎn)介 在編程中常??梢砸?jiàn)到各種字符集和編碼,包括ASCII,MBCS,Unicode等字符集。確切的說(shuō)...
    蘭山小亭閱讀 9,077評(píng)論 0 13
  • 0 前言 在平時(shí)的開(kāi)發(fā)過(guò)程中大部分人應(yīng)該都遇到過(guò)中文亂碼問(wèn)題,瀏覽網(wǎng)頁(yè)時(shí)也會(huì)遇到內(nèi)容顯示亂碼的情況,一般遇到這種情...
    小豬啊嗚閱讀 2,891評(píng)論 1 10
  • 一曲江南情,憶起心難忘。 風(fēng)水傍人家,曾景似勝前。 葉淋濕朦雨,有鳥(niǎo)自遠(yuǎn)方。 聲頻不雜萃,心境唯安然。
    邂逅君閱讀 255評(píng)論 2 1
  • 魔獸系列: 《多塔界》 (后來(lái)改成了《魔獸多塔之異世風(fēng)云》,挺俗的。) 作者:薛定諤牛 (后來(lái)改成了蠶繭里的牛,老...
    學(xué)生王二閱讀 1,686評(píng)論 0 0
  • 想象一下,假如你一個(gè)人流落孤島,你會(huì)想些什么?做些什么?會(huì)遇到什么事呢?孩子在《魯賓遜漂流記》這本書(shū)里找到了答案。...
    低若塵埃燦若星閱讀 222評(píng)論 0 0

友情鏈接更多精彩內(nèi)容