zoukankan      html  css  js  c++  java
  • 字符编码

    计算机由美国人发明,最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系。最多只能用8位来表示(一个字节),即:2**8=256,所以,ASCII最多只能表示256个符号。

    由于ASCII无法存储全球语言的对应关系,中国定义了 gb2312,日本定义了 Shift_JIS,韩国定义了 Euc-kr。

    此时,当一篇文档中同时出现多国语言时,不论使用哪一种编码方式,都会出现乱码。

    由此,定义了一个世界性的标准:Unicode

    ASCII,用 1个字节(8位二进制)表示一个字符

    Unicode,统一用2个字节(16位二进制)表示一个字符,可代表 2**16-1=65535个字符。

    但Unicode中存放了 与其他编码的映射关系,所以才能够兼容万国,链接:  https://pan.baidu.com/s/1dEV3RYp

    字母x,
    用ASCII表示,是十进制的120,二进制 0111 1000
    汉字中已经超出了ASCII的编码范围,用Unicode编码是十进制的20013,二进制的 01001110 00101101
    用Unicode表示,二进制 0000 0000 0111 1000
    所以,unicode兼容ASCII,也兼容万国,是 世界的标准

    此时,新的问题出现了,当一篇文档通篇是英文时,使用Unicode会比ASCII,多耗费一倍的空间,在存储与传输上十分的低效。

    又出现了把 Unicode编码 转化为 "可变长编码"的 UTF-8编码,常用的英文字母编码为1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码为4-6个字节。

    总结:

      内存中统一使用Unicode,浪费空间来换取可以转换为任意编码,不乱码

      硬盘中可以采用各种编码方式,如:utf-8,保证 存放于硬盘或者基于网络传输的数据量很小,提高传输效率与稳定性。

      保证不乱码的核心方法:字符按照什么标准编码,就按照什么标准解码

    内存中数据,通常使用16进制表示,2位16进制数据,即 2个2**4,即2*4个比特位,即代表一个字节,

  • 相关阅读:
    QT中使用CoInitializeEx
    Linux 声音采集的时候内容全都是0
    linux类似系统中编译依赖库出现error trying to exec cc1plus
    C语言练习题2
    进程和任务计划管理
    解决火车头7.6版本无法采集部分https网站处理方法
    PHP输出13位时间戳函数
    destoon取消公司名称怎重复注册的限制
    destoon取消公司名称怎重复注册的限制
    destoon伪静态地址空值优化
  • 原文地址:https://www.cnblogs.com/yizhixiaowenzi/p/13198474.html
Copyright © 2011-2022 走看看