由<meta charset=“UTF-8“>引发的血案--常见字符编码解析

<meta charset="UTF-8">是什么意思?


最近要找实习,时间有限,以后一定把底层原理写个明白

首先解释一下这句代码的意义:

<meta charset="UTF-8">
  • meta为标签head中的子标签

  • 设置网页文件展示时使用的字符集

     

常见字符编码一览


编码名

解释

备注

ASCII

1、ASCII编码每个字母或符号占1byte(8bits),并且8bits的最高位是0,因此ASCII能编码的字母和符号只有128个。有一些编码把8bits最高位为1的后128个值也编码上,使得1byte可以表示256个值,但是这属于扩展的ASCII,并非标准ASCII。通常所说的标准ASCII只有前128个值。

2、ASCII编码几乎被世界上所有编码所兼容(UTF16和UTF32是个例外),因此如果一个文本文档里面的内容全都由ASCII里面的字母或符号构成,那么不管你如何展示该文档的内容,都不可能出现乱码的情况。

3、半角->一个字节(英文)->ASCII->是编译器认识的

Unicode

万国码

1、国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。

2、UTF8解决字符间分隔的方式是数二进制中最高位连续1的个数来决定这个字是几字节编码。0开头的属于单字节,和ASCII码重合,做到了兼容。

UTF-8(16/32)

UTF-8是使用最广的一种 Unicode 的实现方式

将Unicode字符集的抽象代码位映射为8(16/32)位长整数(即代码位)进行数据存储或传输的序列。

GB2312

1、GB全称GuoBiao国标,GBK全称GuoBiaoKuozhan国标扩展。GB18030编码兼容GBK,GBK兼容GB2312,这三种编码有着非常深厚的渊源。

2、最早的简体中文汉字编码国家标准,采用双字节编码,收录7445个图形字符,其中包括6763个汉字。

3、GB2312:全角->两个字节->是编译器不认识的

BIG5

台湾地区繁体中文标准字符集,采用双字节编码,共收录13053个中文字

GBK

是对GB2312编码的扩充,对汉字采用双字节编码。GBK字符集共收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字。

GB18030编码

是对GBK编码的扩充,覆盖中文、日文、朝鲜语和中国少数民族文字,其中收录27484个汉字。GB18030字符集采用单字节、双字节和四字节三种方式对字符编码。兼容GBK和GB2312字符集

表1 常见字符编码表

兼容性一栏


                         

图1 常见字符编码兼容性一览

  图中我们可以看出,ASCII被所有编码兼容,而最常见的UTF8与GBK之间除了ASCII部分之外没有交集这也是平时业务中最常见的导致乱码场景,使用UTF8去读取GBK编码的文字,可能会看到各种乱码。而GB系列的几种编码,GB18030兼容GBK,GBK又兼容GB2312

引用:

1、https://zhuanlan.zhihu.com/p/46216008

2、https://www.qqxiuzi.cn/bianma/zifuji.php

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值