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++的小白
  • 相关阅读:
    3D图片变换
    Javascript编码规范,好的代码从书写规范开始,增强代码的可读性,可维护性,这是相当重要的!
    MVC 项目中又一新方法实现依懒注入 (AutoFac)
    Chrome不支持showModalDialog模态对话框和无法返回returnValue的问题
    Unity 的ICallHander在C#项目中实现注入
    Razor Engine,动态脚本语言,mvc上的语法,适用于文件内容生成,静态网页生成等。
    关于IE中图片不显示的问题(IE兼容问题)
    svn E155004: 'XXX' is already locked
    服务器报错:Swap file "./conf/.server.xml.swp" already exists!
    微信小程序 学习笔记(二)了解他的组成
  • 原文地址:https://www.cnblogs.com/Real-m/p/13637614.html
Copyright © 2011-2022 走看看