zoukankan      html  css  js  c++  java
  • unicode gbk utf-8的差异

    GB2312(1980年)定义,包含6763个汉字,682个字符

    GBK1.0 定义了21003个汉字,21886个字符

    ASCII->GB2312->GBK 编码方式向后兼容,即同一个字符在这些编码方案中总是有相同的编码,只是越到后面支持的字符更多

    区分中文编码的方法是高字节的最高位不为0(@todo),两个字节的最高位都是1

    GB2312,GBK都属于双字节字符集

    GB18030(2000年)取代GBK1.0成为正式的国家标准,定义了27484个汉字。编码采用单字节,双字节,四字节(四字节码位,收入了CJK扩展的6582个汉字)

    CJK(中日韩)扩展 unicode (0x3400—0x4db5)

    unicode 为节省码位,将中日韩三国语言中的文字统一编码

    GB2312的原始编码是区位码,从区位码到内码,需要在高字节和低字节上分别加上 “A0”。

    GB2312 用区位码表示,用两个数来编码汉字和中文符号(第一个为区,第二个为位)

    内码是指OS内部的编码(早起和语言相关,现在都使用unicode了,已经无关了)

    任何字符编码,编码单元的顺序都是有编码方案制定的,与endian(字节序)无关。

    例如:

    GBK 编码单元是字节,用两个字节表示一个汉字,这两个字节的顺序是固定的,不受CPU字节序(endian)的影响。

    utf-16 编码单元是word(字),word之间的顺序是由编码方案制定的,word内部的顺序收到endian(字节序)的影响。

    DBCS字符流解析,遇到最高位为1的字节,就将下两个字节作为双字节编码。

    unicode 只与 ASCII 兼容, 与GB不兼容

    eg: “汉” 的编码

    unicode   6c49

    GB          BABA

    unicode 是一种字符编码方法(兼容世界上所有语言的编码方案)

    全称:universal multiple-octet coded character set

    简称:USC: unicode character set

    unicode 2.0 (1991年)采用 iso-10646-1相同的字库和编码

    unicode 最新版本 unicode 4.0(2005年)

    USC 规定了如何编码,并未规定如何传输和保存编码

    内码和code page

    windows内核已经支持unicode

    windows 曾经使用 code page 适应国际化(支持单字节和双字节编码),但GB180031有一部分是四字解编码的,故code page 无法真正使用。

    USC 两种格式 USC-2(双字节), USC-4(四字节,实际上只用31位,最高位必须为0)

    utf-8 以8位为单元对USC进编码(以字节为单元,没有字节序(endian)的问题)

    utf-16 以16为单位对USC进行编码,需要知道编码单元的字节序

    unicode中标记字节序的方法BOM (bill of mark)

    FFFE    zero width no-break space, 在USC中不存在(不该出现在实际的传输中)

    如果收到 FEFF 表明是 big-endian,如果收到 FFFE 表明是 little-endian

    utf-8 不需要 BOM 表明字节序

    但可以用BOM来表明编码方式

    字符 zero width no-break space 的utf-8是 EF BB BF 故接收者收到 EF BB BF开头的字节流表明是utf-8编码

    windows 用BOM标记文本文件的编码方式

    字节长度

    utf-8     中文(3字节)   英文(1字节)

    gbk       每个字符(2字节),中文高位为1

    故英文多的站点使用utf-8编码可以节省空间。

    @todo

    GBK 不用双字节表示, 00-07 是一位于ASCII一致,96个文字,32个控制符号

    unicode 将所有文字都用2个字节表示(编码),编码空间为2^8*2^8=65536

    释义

    endian 字节序

    big-endian 大字节序

    little-endian 小字节序


    参考:
    unicode, gbk, utf-8区别:http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html

  • 相关阅读:
    css换行
    VC include 路径解析 冷夜
    DirectxDraw学习笔记 冷夜
    winmain窗口代码 冷夜
    DirectDraw 常用功能代码记录 冷夜
    C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free 冷夜
    BMP文件结构 冷夜
    管道流
    打印流
    字符编码
  • 原文地址:https://www.cnblogs.com/brookin/p/4061018.html
Copyright © 2011-2022 走看看