zoukankan      html  css  js  c++  java
  • 2、编码格式的发展史

    1、为什么要去了解编码格式的发展史?为了以后不被编码搞得头大

    2、编码格式的祖先:ASCII

     很早之前,计算机只在美国,美国人为了能在计算机上打印他们自己国家的语言,他们用8个可以开合的晶体管来组成不同的状态,来表示他们国家的字符

    并将其称为“字节”,那为什么是8个(女朋友也问过这个问题)?

    :如果是一个bit,也就是只有一个晶体管,那最多也只能表示两种状态,也就是两个字符,两个晶体管就是4种状态,显然并不能把他们的字母啥的都表

    示出来,那最后他们发现2**7也是就0-127种状态就够用,那2**8是为什么?-----留一些余地,也就是扩展字符,显然后面就用上了。。

     

    3、群雄并起:GBK 、Shift-JIS(日文)、Euc-Kr(韩文)

    之后计算机使用愈发广泛,各个国家都希望能在计算机中输出自己国家的语言,于是乎 在原来ASCII的基础上,诞生了各个国家自己的一套编码格式,如

    中国的GBK、日本的Shift-JIS、韩国的Euc-Kr;

    GB2312:当中国用上计算机的时候,ASCII表 已经满了(早期扩展字符是空位,后面逐渐补上的),而我们还有6000+个常用汉字需要保存。那就自己搞吧,

    就把原来127后面的奇怪的 字符都去除。规定:一个小于127 的字符意义和之前一样,两个大于127 的字符连在一块就表示一个汉字(两个字节表示一个中文);

    GBK:之前的6000+个汉字不够用,于是就有了GBK标准,GBK向下兼容,又增加近20000个汉字

    GB18030:对GBK的补充,增加了8000+个少数民族的字,延用至今

     

    4、统一:Unicode

     各个国家搞出一套自己 的编码标准,结果谁也不支持谁的编码;当时要想在电脑上显示、输入中文,就要在装一个字符系统,装错了那就乱套了,其他国家亦如是。。

    这个时候ISO(国际标准化组织)就站出来,说我制定一套统一的标准,大家按这个标准来,就有了Unicode编码(万国码),那这个Unicode编码肯定需要具备以下特点:

    • 兼容显示、转化各个国家的编码标准

    这个特点就尤为重要,因为Unicode出来,我不可能完全按你的Unicode来,那我之前保存在计算机中的GBK文件不就没用了,相当于推倒重来。

    5、优化:UTF-8、UTF-16

    Unicode也向下兼容,但是将原来的8位一个字节 扩展成了16位,也就是说,你在PC中存放纯英文文本时,较之前浪费了一倍的空间,这就有了UTF编码。

    UTF(Unicode  Transfer Format):其中UTF8,表示8位传输数据,UTF16就表示任何字符都以16位传输,这里的传输表示的是存到硬盘中的 一种状态,肯定优先选择

    utf8。因为在utf8编码下,使用1-4个字节表示一个字符,原来的ASCII还是以8位存在硬盘中,而中文则是以3个字节,也就是24位存放。

     

    最后总结:根据自己文档包含的内容来设置编码格式,如只有中文和英文的就可以使用GBK,如果含有其他字符,建议使用utf8。一般使用utf8编码,较为灵活,更不容易

    出乱码问题。

    一个初识C++的小白
  • 相关阅读:
    mybatis的物理分页:mybatis-paginator
    maven常用插件: 打包源码 / 跳过测试 / 单独打包依赖项
    mybatis 3.2.8 + log4j2.0.2 控制台输出sql语句
    struts2: config-browser-plugin 与 convention-plugin 学习
    struts2 异常处理3板斧
    java:集合的自定义多重排序
    mac/linux中vim永久显示行号、开启语法高亮
    weblogic下部署应用时slf4j与logbak冲突的解决办法
    struts2使用Convention Plugin在weblogic上以war包部署时,找不到Action的解决办法
    spring 3.2.x + struts2 + mybatis 3.x + logback 整合配置
  • 原文地址:https://www.cnblogs.com/Real-m/p/13637614.html
Copyright © 2011-2022 走看看