• 简单讲解ANSI Unicode、GBK、GB2312


    GB2312:涵盖了所有简体字符以及一部分其他字符

    GBK:在GB2312的基础上加入了对繁体字符等其他非简体字符

    (K代表扩展)

    ANSI编码,通常指的是平台的默认编码,例如英文操作系统中是ISO-8859-1,中文系统是GBK

    这些编码会通过代码页直接将字符映射为存储设备上的字节流

    缺点也很明显,扩展性差,如果有新的一门语言,往里加的话会不方便,因为其中 的编码已经写死了,只要移动一下 ,原有的编码会很容易打乱。Unicode 则没有这种困扰。

    中国的GBK,GB2312和GB18030编码

    操作系统在发布的时候,通常会往机器里预装这些标准的字符集还有平台专用的字符集

    提问:如果一个文档中有十几个国家的文字,那么文档能正常显示吗?

    回答:把所有的编码格式都包含在其中——Unicode

    Unicode字符集概述

    Unicode字符集涵盖了目前人类使用的所有字符,并为每个字符进行统一编号,分配唯一的字符码(Code Point)

    UTF-8 (应用最广的一种Unicode编码方案)

    Unicode是两个字节吗?

    Unicode只是定义了一个庞大的、全球通用的字符集,并为每个字符规定了唯一确定的编号,具体存储为什么样的字节流,取决于字符编码方案。推荐的Unicode编码是UTF-16和UTF-8。

    带签名的UTF-8指的是什么意思?

    带签名指的是字节流以BOM标记开始。很多软件会“智能”的探测当前字节流使用的字符编码,这种探测过程出于效率考虑,通常会提取字节流前面若干个字节,看看是否符合某些常见字符编码的编码规则。由于UTF-8和ASCII编码对于纯英文的编码是一样的,无法区分开来,因此通过在字节流最前面添加BOM标记可以告诉软件,当前使用的是Unicode编码,判别成功率就十分准确了。但是需要注意,不是所有软件或者程序都能正确处理BOM标记,例如PHP就不会检测BOM标记,直接把它当普通字节流解析了。因此如果你的PHP文件是采用带BOM标记的UTF-8进行编码的,那么有可能会出现问题。

    Unicode编码和以前的字符集编码有什么区别?

    早期字符编码、字符集和代码页等概念都是表达同一个意思。例如GB2312字符集、GB2312编码,936代码页,实际上说的是同个东西。但是对于Unicode则不同,Unicode字符集只是定义了字符的集合和唯一编号,Unicode编码,则是对UTF-8、UCS-2/UTF-16等具体编码方案的统称而已,并不是具体的编码方案。所以当需要用到字符编码的时候,你可以写gb2312,codepage936,utf-8,utf-16,但请不要写unicode(看过别人在网页的meta标签里头写charset=unicode,有感而发)。

  • 相关阅读:
    想免费用虚拟手机号注册网站、买买买或接验证码?
    聚观早报|华为Mate 60 Pro支持面容支付;特斯拉重回底特律车展
    【leetcode】二分刷题=>704、35
    【QT开发(8)】QT 中使用tensorrt
    揭秘亚马逊,eBay,沃尔玛的运营秘籍:如何实现爆款产品并获得更高流量?
    2023年北京市安全员-C3证证模拟考试题库及北京市安全员-C3证理论考试试题
    五、互联网技术——网络管理命令
    Zalando Postgres Operator 快速上手
    绕不过的并发编程--synchronized原理
    开放共赢 | 美格智能&高通物联网技术开放日成功举办
  • 原文地址:https://blog.csdn.net/qq_42317817/article/details/127448605