zoukankan      html  css  js  c++  java
  • 编码相关了解

    编码
    ascii
    最基础的字符编码集,以8bit字节为单位存储,0-127 无需多说。

    ISO-8859-1字符集
    也叫Latin-1, ascii的扩展,同样以8bit字节为单位存储,0-255

    GB2312
    中文国标字符集,它的第一个字节为128-255。系统可以据此判断,若第一个字节大于127,则把与该字节后紧接着的一个字节结合起来共两个字节组成一个中文字符。
    在GB2312字符集中,ASCII字符仍然用一个字节存储,换句话说该ASCII是该字符集的子集。那么同时就可以得出,GB2312不是定长的。
    GB2312只包含数千个常用汉字,只能表示简体字

    GBK
    GB2312的扩展,保持和GB2312兼容外,还包含繁体中文字,日文字符和朝鲜字符。
    GBK是现阶段Windows及其他一些中文操作系统的缺省字符集

    GB18030-2000
    国家标准中文字符集,比GBK包含字符更多的字符集

    unicode
    这是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS。UCS可以看作是"Unicode Character Set"的缩写。

    UTF
    考虑到unicode编码不兼容iso8859-1编码,而且容易占用更多的空间:因为对于英文字母,unicode也需要两个字节来表示。所以unicode不便于传输和存储。因此而产生了utf编码,utf编码兼容iso8859-1编码,同时也可以用来表示所有语言的字符,不过,utf编码是不定长编码,每一个字符的长度从1-6个字节不等。另外,utf编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示,而汉字使用三个字节。
    一种针对Unicode的可变长度字符编码,也是一种前缀码。可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容。UTF是“UCS Transformation Format”的缩写

    UTF-8使用1~4个字节为每个字符编码:
    1.128个US-ASCII字符只需一个字节编码(Unicode范围为U+0000~U+007F);
    2.带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要两个字节(Unicode范围U+0080~U+07FF);
    3.其他多文种平面中的字符使用三个字节编码(例如中文,因为Unicode BMP字符编码值映射中中文字符占用了15位到16位,后面详细介绍);
    4.其他极少使用的Unicode辅助平面的字符使用四字节编码。

    UCS只是规定如何编码,并没有规定如何传输、保存这个编码。例如“汉”字的UCS编码是6C49,我可以用4个ascii数字来传输、保存这个编码;也可以用utf-8编码:3个连续的字节E6 B1 89来表示它。关键在于通信双方都要认可。UTF-8、UTF-7、UTF-16都是被广泛接受的方案。UTF-8的一个特别的好处是它与ISO-8859-1完全兼容。UTF是“UCS Transformation Format”的缩写。

    Little endian和Big endian
    Unicode码可以采用UCS-2格式直接存储。以汉字”严“为例,Unicode码是4E25,需要用两个字节存储,一个字节是4E,另一个字节是25。存储的时候,4E在前,25在后,就是Big endian方式;25在前,4E在后,就是Little endian方式。
    这两个古怪的名称来自英国作家斯威夫特的《格列佛游记》。在该书中,小人国里爆发了内战,战争起因是人们争论,吃鸡蛋时究竟是从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。为了这件事情,前后爆发了六次战争,一个皇帝送了命,另一个皇帝丢了王位。
    因此,第一个字节在前,就是”大头方式“(Big endian),第二个字节在前就是”小头方式“(Little endian)。
    那么很自然的,就会出现一个问题:计算机怎么知道某一个文件到底采用哪一种方式编码?
    Unicode规范中定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做”零宽度非换行空格“(ZERO WIDTH NO-BREAK SPACE),用FEFF表示。这正好是两个字节,而且FF比FE大1。
    如果一个文本文件的头两个字节是FE FF,就表示该文件采用大头方式;如果头两个字节是FF FE,就表示该文件采用小头方式。

  • 相关阅读:
    Bootstrap JS插件使用实例(2)-模态对话框
    Java常用正则表达式验证工具类RegexUtils.java
    程序员不是砌砖工人,他们是作家【转】
    js中继承的几种用法总结(apply,call,prototype)
    javascript中apply()方法解析-简单易懂!
    javascript方法 call()和apply()的用法
    高性能优化Web前端
    Javascript类继承-机制-代码Demo【原创】
    初识WEB:输入URL之后的故事【转】
    博客园添加网站统计访问量-操作简单很实用哦!
  • 原文地址:https://www.cnblogs.com/tianlanliao/p/3550831.html
Copyright © 2011-2022 走看看