字符和编码

7次阅读

共计 1362 个字符,预计需要花费 4 分钟才能阅读完成。

一、概述

1.1 大致目的

  • 了解编码集的发展
  • 中文编码集
  • 常用编码

二、ASCII 码

2.1ASCII 码

  1. ASCII 码使用 7bit 二进制数来表示,所以共 2^7=128 个编码。
  2. ASCII 包含 95 个可打印的字符和 33 个不可打印字符(包括控制字符)(128 = 33 + 95)

记住一些常用的 ASCII 码的 10 进制数字是很有必要的,比如说 A 是 65,a 是 97,0 是 48。同一个字母,大写字母比小写字母小 32。

2.2ASCII 码的拓展

随着计算机技术的发展,ASCII 码逐渐满足不了人们的需求了,主要包括如下几点:

  • 很多应用或者国家中的符号都无法表示
  • 数学字符:“➗、≠、≥、≈”等等一些数学字符无法表示。

所以 ASCII 码就被扩充了。扩充后的是增加了一位的,也就是从原来的 7 位变为 8 位,扩充后的编码叫做 Extend ASCII 码。
拓展的 ASCII 码增加了一些英标、希腊符号、欧洲字符、表格符、其他常用符等一些字符。

三、我国字符编码集的国际化

事实上,很多国家的语言是有限字符构成的,然而我国文化博大精深,中文则是不以有限字符组合的语言。所以字符编码集的国际化就很有必要。

3.1 GB2312

国标 2312 是我国最早的比较完毕的一个编码集,全称叫:信息交换用汉字编码字符集,包括 7 前多个字符。

3.2 GBK

由于 GB2312 的规范性不被国家认可,所以我国又发命了 GBK(国标扩)这种编码集,全称叫:汉字内码扩展规范。
它向下兼容 GB2312, 向上支持国际 ISO 标准。收录了 2.1 万多个汉字,并支持全部中日韩汉字。

四、Unicode

我们需要一种全世界通用的字符编码,举个例子,比如美国的 tom 要访问中国的一个网站,若 tom 的电脑上没有安装 GBK 这种支持中文的编码集,则他看到的中文网站将是一片乱码。所以我们不仅要有一个本地化的编码,还学要一个全球化的编码集。

Unicode : 统一码、万国码、单一码,支持世界上所有国家的语言编码,定义了世界通用的符号集,UTF-* 实现了编码。
比如说我们平常使用的 UTF- 8 是以字节为单位对 Unicode 进行编码。

五、拓展

平时编程时,建议使用 Unicode 字符集,建议使用 UTF-8
②中国的 Windows 系统是默认使用 GBK 编码方式的。所以在平时设置 IDE 的时候我们也要注意下。
③字符集在记事本上的更改:记事本默认的存储编码是 ANSI。
在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
我们在桌面新建一个测试记事本,并输入以下内容

点击另存为,可以看到,下方有个编码的选项,默认选择 ANSI 就是 GBK 编码。


我们对保存后的文本文档,点击右键选择打开方式,我们换成另一个文本文档软件,在此使用 sublime 打开,我们发现:


我们发现中文字符全部乱码,这是由于 GBK 的中文编码和 UTF- 8 的中文编码不一致造成的,这也是为什么我们平时在 IDE 上打中文注释移到记事本乱码的原因。
我们在换过来说明下,下面是将 sublime 中的中文文档转至记事本的情况:

我们点击另存为保存后,使用 TXT 打开:


发现此时 text 的编码是 UTF- 8 的。实时上我可以使用记事本任意切换 UTF 和 GBK 这两种编码方式,当我们遇到 GBK 和 UTF 编码的乱码,并且是因为这两种格式的中文编码不同导致时,我们不妨使用上面这种方法,让中文编码变成正常的形式。

正文完
 0