字符編碼

  1. 128 个 ASCII 字符(Unicode 范围由 U+0000 至 U+007F)只需一个字节。
  2. 带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及马尔代夫语(Unicode 范围由 U+0080 至 U+07FF)需要二个字节。
  3. 其他基本多文种平面(BMP)中的字符(CJK属于此类-Qieqie注)使用三个字节。
  4. 其他 Unicode 辅助平面的字符使用四字节编码。

GBK编码,一个汉字占两个字节。汉字在GB家族中是双字节

UTF-16编码,通常汉字占两个字节,CJKV扩展B区、扩展C区、扩展D区中的汉字占四个字节(一般字符的Unicode范围是U+0000至U+FFFF,而这些扩展部分的范围大于U+20000,因而要用两个UTF-16)。

UTF-8编码是变长编码,通常汉字占三个字节,扩展B区以后的汉字占四个字节。但在UTF-8中却是3字节 所以其编码方式是1110xxxx 10xxxxxx 10xxxxxx  UTF-8 使用一至四个字节为每个字符编码。

占 2 个字节的:〇

占 3 个字节的:基本等同于 GBK,含 21000 多个汉字

占 4 个字节的:中日韩超大字符集里面的汉字,有 5 万多个

1 个 utf8 数字占 1 个字节

1 个 utf8 英文字母占 1 个字节

在查找 UTF-8 编码资料时发现,很多的帖子说的 UTF-8 编码里,一个汉字占用3个字节,

有的还做了个证明,大概是这样的,创建一个没有 BOM 的 UTF-8 编码的文本文件,

里面保存了几个汉字,然后查看文件的大小。我觉得这样的证明没有一点说服力,

因为 UTF-8 是变长的,1-6 个字节,少量的汉字检测不能说明所有的汉字都是的。

后来我又查看了字符映射表-汉语,找到了正确的答案:

少数是汉字每个占用 3 个字节,多数占用 4 个字节。

占用 3 个字节的范围

U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3      共 115 个

U+2F00 - U+2FD5 : 0xE2 0xBC 0x80 - 0xE2 0xBF 0x95      共 213 个

U+3005 - U+3029 : 0xE3 0x80 0x85 - 0xE3 0x80 0xA9      共 36 个

U+3038 - U+4DB5 : 0xE3 0x80 0xB8 - 0xE4 0xB6 0xB5      共 7549 个

U+4E00 - U+FA6A : 0xE4 0xB8 0x80 - 0xEF 0xA9 0xAA      共 44138 个

U+FA70 - U+FAD9 : 0xEF 0xA9 0xB0 - 0xEF 0xAB 0x99      共 105 个

合计: 52156 个

占用 4 个字节的范围

U+20000 - U+2FA1D : 0xF0 0xA0 0x80 0x80 - 0xF0 0xAF 0xA8 0x9D      共 64029 个

合计: 64029 个

时间: 2024-11-02 14:39:20

字符編碼的相关文章

Python 基礎 - 字符編碼

Python 解釋器在加載 .py 文件中的代碼時,會對內容進行編碼 (默認 ascill) ASCII (American Standard Code for Information Interchange, 美國信息交换標準代碼)是基於拉丁字母的一套電腦编碼系统, 主要用於顯示現代英語和部分支援其他西歐語言,其最多只能用 8 bit來表示(一個字節),即: 2**8 = 256-1,所以ASCII碼最多只能表示255個符號  關於中文編碼 為了處理漢字,程序員設計了用於簡體中文的GB2312

encodeURI() 為什麼URI要編碼?

encodeURI 可以為URI編碼,使其符合URI規範. URI是Uniform Resource Identifier 的縮寫,中文翻譯為 "統一資源標誌符" . 為什麼要對URI編碼,什麼時候用的到URI編碼? 如果對URI編碼很陌生,那我們先來看個例子,看看URI編碼跟我們有多常接觸. 先打開google的網頁: https://www.google.com.tw/ 在搜尋欄輸入"維克的煩惱",按下google搜尋,等結果出來. 老實說我滿期待你看到這個部落

linux常用編碼處理

--經驗果然是踩坑才過來的,每一個經驗也許都會隱藏着一次被坑的經歷 p { margin-bottom: 0.1in; line-height: 120% } code.cjk { font-family: "Courier New", monospace } 中文出現亂碼主要因爲編碼不同,編碼不同主要分爲一下兩種情況: 1.文件本身編碼不一致 2.某些軟件自帶轉碼功能 注意: 英文字母也需要轉碼!!!一般情況下沒有影響,但是在某些情況下會導致非常嚴重的影響並且不能找到原因. Ex:

Python編碼格式錯誤解決方案及案例

Python格式錯誤解決方案及案例 這幾天在玩爬蟲,在解析和提取内容時經常出現由於内容格式問題導致出錯,為防止以後出錯,整下一下,以下是這幾天的總結: 1. 特殊符號或表情符號等 背景:爬取一個烹飪教學網站,在用BeautifulSoup解析網頁時報錯: UnicodeEncodeError: 'UCS-2' codec can't encode character '\U0001f44d' in position 0: Non-BMP character not supported in Tk

Myeclipse編碼設置

要让一个js文件打开时编码格式为UTF-8,需要做2件事情: 1,设置js文件的默认编码格式为UTF-8: 2,设置workspace的编码格式为UTF-8. 设置js文件的默认编码格式为UTF-8 在Windows->Preference页面中,选择General->Content Types 在右边的框中,选择Text->Javascript,将下面的Default Encoding改为utf-8 设置java文件的默认编码格式为UTF-8 在Windows->Preferen

java HttpServletRequest和HttpServletResponse詳解

這篇文章主要介紹瞭java HttpServletRequest和HttpServletResponse詳解的相關資料,需要的朋友可以參考下 最近由於CAS相關的JAR包的重新封裝,所以想盡量做到0配置,而這個過程中大量使 用HttpServletRequest,現在整理如下,以便以後查閱.(表格為從別的地方復制的,排版渣瞭點,酬和看吧.) 請求與響應相關的類和接口非常多,下表是主要的與請求和接口相關的類以及接口. 主要的與請求和接口相關的類及接口 方法 說明 ServletInputStrea

Asp.net attributes collection

<?xml version="1.0" encoding="utf-8"?><root>  <ContralNames>    <Contral Name="@Page">      <Attribute Name="Buffer">是否啟用http響應緩沖</Attribute>      <Attribute Name="ClassNa

python-1 python基础知识

python第一课代码笔记 hello world [[email protected]1 python]# vim hello1.py #!/usr/bin/env python print ('hello world!') [[email protected]-data-1 python]# python hello1.py hello world! 注意 #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器:#!/usr/bin/e

C#编程总结(九)字符编码

C#编程总结(九)字符编码 相信大家一定遇到过乱码的问题,为什么会乱码呢?输出的数据怎么就跟输入的不一样呢? 最近在总结加密问题,也遇到了同样的困扰.所以今天来集中解决这个问题. 什么是字符? 字符是指计算机中使用的字母.数字.字和符号,包括:1.2.3.A.B.C.~!·#¥%……—*()——+等等. 字符集(Charset) 字符集(Charset)是一个系统支持的所有抽象字符的集合. 字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等. 什么是字符编码? 字符编码(Ch