UTF-8編碼佔幾個字節?html
佔2個字節的:帶有附加符號的拉丁文、希臘文、西裏爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母則須要二個字節編碼post
佔3個字節的:基本等同於GBK,含21000多個漢字編碼
佔4個字節的:中日韓超大字符集裏面的漢字,有5萬多個spa
一個utf8數字佔1個字節操作系統
一個utf8英文字母佔1個字節.net
少數是漢字每一個佔用3個字節,多數佔用4個字節。code
http://blog.csdn.net/bluetjs/article/details/52936943orm
char buf[101][30]=htm
{blog
"交易成功",
ISO 錯誤 #68 請使用貸記卡,
"請與銀行聯繫"
}
第二個元素,存不下,會越界;
一個漢字在OC和C中分別佔用幾個字節?
http://bbs.itheima.com/thread-262480-1-1.html
這是編碼的問題,跟OC與C不要緊。
Xcode中中文佔用3個字節,由於在utf-8裏面中文要3個字節。C中佔2個字節,最大多是你默認使用GB2312編碼格式,國標中中文佔2字節。
區別1:字符集不一樣 區別2:編碼格式不一樣。
----------------退後,下面開始裝逼了------------
一。中文可能碰到的編碼
ANSI:最先的時候計算機ASCII碼只能表示256個符號(含控制符號),這個字符集表示英文字母足夠,其中,咱們鍵盤上可見的符號的編碼範圍是從32到126(大小寫英文字母、數字、英文符號等)。但表示漢字、日語、韓語就不太夠用了,漢字經常使用字有3000多個。
不一樣的國家和地區制定了不一樣的標準,由此產生了 GB2312, BIG5, JIS 等各自的編碼標準。這些使用 2 個字節來表明一個字符的各類漢字延伸編碼方式,稱爲 ANSI 編碼
可是中國人也要用電腦打字,因而,中國人就研究出來了最先的中文字符集GB2312(GBK就是後來的擴展),GB2312的作法是,把ASC碼取值範圍的128~255這個區間挪用了一下,用兩個ASC碼錶示一個漢字,這樣可用的編碼範圍用十六進制表示就是0x8080到0xFFFF,這大概能表示一萬多個符號,足夠了。[注:實際沒用那麼多,GBK的範圍是8140-FEFE]
那個時候,計算機技術還不發達,各個國家搞本身的,好比臺灣,也另搞了一套,叫BIG5(俗稱:大五碼),跟大陸的也不太同樣,但方法是相似的,都是用0x80到0xFF這個區間。
而後日語(有編碼JIS)、韓語等等也各搞一套。
這些國家的編碼區間都是重疊的,但同一個漢字(好比有一些漢字同時存在於簡體、繁體、日語漢字中)有不一樣的編碼,很混亂是否是?但也湊合用了。編碼不一樣致使了不少麻煩,好比一個網頁,若是你不知道它是什麼編碼的,那麼你可能很難肯定它顯示的是什麼,一個字符多是大陸簡體/臺灣繁體/日本漢字,但又徹底是不一樣的幾個字。
因此若是用一些很老的軟件,可能會據說有中文版/日文版之類的,對應的版本只能在對應的系統上運行。
後來,這個對操做系統的開發實在是太困難了,由於這意味着不一樣語言的版本,都要從新編碼。因而發明了Unicode。
Unicode這個東西,就是要把地球上全部的語言的符號,都用統一的字符集來表示,一個編碼真正作到了惟一。
Unicode裏有幾種編碼方式:
UTF-16BE/LE:UTF-16就是Windows模式的編碼模式(Windows裏說的Unicode通常都是指這種編碼),用2個字節表示任意字符,注意:英文字符也佔2個字節(變態不?),這種編碼能夠表示65536個字符,至於LE和BE,就是一個數值在內存/磁盤上的保存方式,好比一個編碼0x8182,在磁盤上應該是0x81 0x82呢?仍是0x82 0x81呢?就是高位是最早保存仍是最後保存的問題,前者爲BE,後者爲LE。
UTF-8:UTF-8則是網頁比較流行的一種格式:用一個字節表示英文字符,用3個字節表示漢字,準確的說,UTF-8是用二進制編碼的前綴,若是某個UTF-8的編碼的第一個字節的最高二進制位是0,則這個編碼佔1字節,若是是110,則佔2字節,若是是1110,則佔3字節……
二。字符集與編碼格式
對於 ASCII、GB 23十二、Big五、GBK、GB 18030 之類的遺留方案來講,基本上一個字符集方案只使用一種編碼方案。
好比 ASCII 這部標準自己就直接規定了字符和字符編碼的方式,因此既是字符集又是編碼方案;而 GB 2312 只是一個區位碼形式的字符集標準,不過實際上基本都用 EUC-CN 來編碼,因此說起「GB 2312」時也說的是一個字符集和編碼連鎖的方案;GBK 和 GB 18030 等向後兼容於 GB 2312 的方案也相似。
因而,不少人受這些遺留方案的影響而沒法理解字符集和編碼的關係。
對於 Unicode,字符集和編碼是明確區分的。Unicode/UCS 標準首先是個統一的字符集標準。而 Unicode/UCS 標準同時也定義了幾種可選的編碼方案,在標準文檔中稱做「encoding form」,主要包括 UTF-八、UTF-16 和 UTF-32。
因此,對 Unicode 方案來講,一樣的基於 Unicode 字符集的文本能夠用多種編碼來存儲、傳輸。
因此,用「Unicode」來稱呼一個編碼方案不合適,而且誤導。
Xcode默認的中文編碼格式是UTF-8,一個漢字佔3個字節,因此在用Xcode的編寫C語言程序的話,一個漢字也是3個字節,若是是GB2312,GBK德編碼格式,一個漢字就佔用2個字節。 |