字符集和字符编码

首先提出一句:计算机只认0和1

原因(不重要):因为计算机的硬件结构和运作方式。计算机是一种数字电路系统,数字电路只能处理二进制数值。在数字电路中,信号只有两个状态,即开或关,对应着逻辑电平的高电平和低电平。计算机通过这两个状态来表示信息和控制信号,以实现各种功能。

一.含义

  • 什么是字符集 :字符集是书写系统字母与符号的集合
  • 什么是字符编码:一套规则或者方法,将特定字节或字节序列映射为文本字体显示特定字符的过程

二.常见字符集与举例

常见字符集:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等

ASCII又被叫做简单字符集,为现代编码模型奠定了基础。

:ASCII字符集和编码

ASCII字符集:主要包括控制字符(回车键、退格、换行键等);可显示字符(英文大小写字符、阿拉伯数字和西文符号)。

ASCII编码:将ASCII字符集转换为计算机可以接受的数字系统的数的规则。ASCII字符集使用7位(bits)表示一个字符,共128个字符。

图例:

三.各个编码的演进

由于最基础的ASCII无法满足人们的需求因此演变出了多个现代编码模型。

GB2312:GB2312 是基于区位码设计的,GB2312编码大约包含6000多汉字(不包括特殊字符)

GBK:GBK是针对中文的字符集,兼容GB2312并对其进行了扩展,支持更多的汉字和符号。可以表示大约2万多汉字,适用于中文环境。

Unicode:各个编码格式在本地使用没有问题,一旦出现在全球网络中,由于不兼容,互相访问就出现了乱码现象。就像秦始皇统一汉字原理一样,全球所有国家和民族使用的所有语言字符的统一字符集诞生了,这就是Unicode字符集。

Unicode字符集采用了许多种字符编码方式。比如“UTF-8”,“UTF-16”,“UTF-32”等。因此UTF-8、UTF-16等,它们只是Unicode字符集中所采用的具体的字符编码。

UTF-8与UTF-16:

四.讲一个小游戏

今天在课上做了一个小游戏,每个组临时做出一个密码本来传递信息(汉字,一句话),最后转义

讲一讲我们组的密码本(潦草版):

基础拼音对照表:

音调用 /1~4表示

数字:使用二进制表示 ,其中用-二进制-区分

每个字或数的区分用..

每个拼音单词的区分用.

例:

计算2

用密码表示为:

9.8/2..18.20.0.13/4..-10-..

送你一句话:25.7.20/4..13.8/3..12.4.8/3..19.8.0.13/1..10.0.8/1..23.8.13/1..

总之,其实这就是一个编码和解码的过程。我们的密码本对应的规则也就可以叫属于我们的编码。

五.插一句,关于乱码问题

出现乱码的原因可能有:

1.字符集不匹配:当文本使用的字符集与显示或处理该文本的程序所使用的字符集不一致时,就会出现乱码。例如,如果文本使用的是UTF-8字符集,但程序使用的是GBK字符集来解析该文本,就会导致乱码。

2.编码错误:在文本传输或处理过程中,如果对文本的编码方式处理不当,也会导致乱码。例如,将一个使用UTF-8编码的文本错误地以GBK编码方式进行解析,就会出现乱码。譬如鸡同鸭讲。

3.缺少字符映射:有些字符集可能不包含某些特殊字符或汉字,当这些字符在文本中出现时,如果没有正确的字符映射关系,就会导致乱码。

4.文本格式错误:如果文本本身存在格式错误,例如缺少必要的编码标识或转义字符,也会导致乱码。

5.程序处理错误:有些程序在处理文本时可能存在bug或错误,导致文本解析错误,从而产生乱码。

  • 31
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值