zoukankan      html  css  js  c++  java
  • 深入浅出unicode

    深入浅出unicode大家都知道jvm内部的字符都是unicode表示的,但是什么是unicode捏? 听我讲你知

    早在很多年前国际标准化组织(ISO)那些伙计们就感觉ascII那200来个字符是不够用的
    所以就想办法重新编码 以容纳全世界所有的字符

    办法是:用四个字节表示一个字符,这个编码称之为ISO-10646
    你想啊 2的32次方 那字符老多了 有几百亿个吧 手指头多的可以数数
    这四个字节都有个名字
    第一个字节:组(group)
    第二个字节:面(plane)
    第三个字节:行(row)
    第四个字节:码(ceil)

    但是有人就看ISO那帮伙计们不爽,就联合ms apple ibm sun等众兄弟另高了一套,取其名曰unicode,unicode用2字节表示一个字符
    众兄弟们很爽

    但是好景不长 ISO和unicode很快发现了问题:
    初衷是要统一编码 到头来还是没统一啊,这不是白忙活了吗?

    于是经过双方谈判 unicode加入到ISO-10646的0组0面叫做基本多语言文字面(BMP)
    就是说本来2个字节的unicode也变成了4个字节
    而实际上用两个字节就能够表示出99%的常用字符,专家们当然发现了这个问题
    于是出现了utf-16,utf是ucs/unicode transformation format的缩写
    utf-16是这样表示的
    bmp字面的字符编码保持不变,即unicode的编码(两个字节)
    其他字面的字符按照一定规则把32位转换成两个16位就ok啦
    专家就是专家
    注:按照一定规则的目的是避免跟bmp编码冲突(个人理解)

    但是问题总是一个接着一个
    当时的计算机只能处理单字节数据流,怎么办呢? 这当然难不倒专家
    于是乎 专家有重新按照一定规则来编码
    一个字节的utf-8表示 ascII
    二个字节的utf-8表示 。。。
    三个字节的utf-8表示 。。。
    四个字节的utf-8表示 。。。
    一句话:无论是一个字节还是4个字节,通过专家们的规则肯定可以转换成ISO-10646编码,也就能够表示全世界的的任何字符了

    参考《深入浅出mysql》
  • 相关阅读:
    Eclipse设置C++自动补全变量名快捷键
    Sublime Text 3 快捷键总结
    eclipse使用技巧的网站收集——转载(三)
    eclipse使用技巧的网站收集——转载(二)
    eclipse使用技巧的网站收集——转载(一)
    WSAStartup函数
    makeword()
    CreateEvent的用法
    VC中_T()的作用
    多线程的那点儿事(之生产者-消费者)
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400763.html
Copyright © 2011-2022 走看看