zoukankan      html  css  js  c++  java
  • 快速理解编码,unicode与utf-8

    1.为什么编码,因为cpu只认识数字
    2.ASCII 一个字符共占7位,用一个字节表示,共128个字符
    3.那么ASCII浪费了最高位多可惜,出现了
    ISO-8859-1,一个字节,256个字符,很多协议的默认编码
    4.中文编码
    GB2132 两个字节,大陆使用,表示约6k个字符
    BIG5 两个字节,繁体字编码标准,共表示1.3w个字符
    GBK 扩展了GB2132,能表示2w个汉字,不兼容BIG5

    Unicode
    又称万国码,源于一个组织,一共有两个组织,都是为了构建出一种能表示地球所有字符的编码,其中一个就是unicode,unicode是准确说是一个字符表,每个字符对应一个数字,称为码点,兼容ACSII,即a对应数字96,目前来说16位长度还未占满,所以有人说unicode字符占两个字节,这绝对是一种误解,unicode只是定义了哪个字符对应哪个数字,就这么简单。

    java与unicode
    java中为了存储字符时统一映射关系,存储与编码无关的unicode码点,不然一会存一个gbk字符,又来一个big5字符,连打印字符串都有问题了。

    utf
    那么unicode只是定义映射关系的话,具体怎么存储,用几个字节存呢
    目前有ucs和utf两种思路。
    utf-8 因为节省流量,互联网用的较多
    用1,2,3,4个字节存储一个字符,通常来说英文字符一个字节,汉子三个字节
    具体格式参考链接
    uft16与bom
    采用2.4字节存储,那么为了区分高字节在前还是在后,就需要在字节流前加特殊的BOM字节表示,utf8不需要bom,只是微软有这个习惯。

    更加详细的描述推荐  https://www.cnblogs.com/leesf456/p/5317574.html

  • 相关阅读:
    python安装教程
    protobuf安装教程
    PlantUML安装教程
    题解-CF1140E Palindrome-less Arrays
    FST
    线段树
    题解-CF677D Vanya and Treasure
    最短路
    后缀自动机
    虚树
  • 原文地址:https://www.cnblogs.com/lshao/p/9738041.html
Copyright © 2011-2022 走看看