Loading

字符编码:UTF-8、ASCII、ANSI

一、字符编码

字符编码(英语:Character encoding)是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递

字符编码的主要目的是为了存储和通讯,但全世界各个国家都有不同的字符,且字符数量也不相同,故全世界各个国家、地区都有一套编码规则。

对于计算机来说,所有的信息都要是二进制(即0/1)数据才能处理。但对于人来说,二进制的数据根本就看不懂,那么就需要将二进制数据编码成人可以理解的字符。

1️⃣ 文本(ASCII)转换成二进制

💡 注意100和abc之间的空格,空格也算一个ASCII字符

对于ASCII编码:100 abc ,字符:10空格abc,查找ASCII对照表

转换成对应的二进制:00110001 00110000 00110000 00100000 01100001 01100010 01100011

2️⃣ 文本(UTF-8)转换成二进制

💡 UTF-8中的 ASCII字符用 1Byte 二进制表示,中文字符用 3Byte 二进制表示

对于UTF-8编码:5你好

转换成对应的二进制:00110101 11100100 10111000 10101101 11100101 10011011 10111101

二、ASCII编码

ASCII(发音: /ˈæski/ ASS-kee[1],American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统

ASCII将字母数字其它符号编号,并用7bit的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1Byte的方式存储。

  • 控制字符的ASCII值范围是 0 ~ 31 和 127(即0x00 ~ 0x1F 和 0x7F),共33个字符

  • 显示字符ASCII值范围是 32 ~ 126(即0x20 ~ 0x7E),共95个字符

三、UTF-8编码

Unicode是ASCII(美国信息交换标准码)字符编码的一个扩展,形成了例如UTF-8UTF-16UTF-32

最大的特点是可变长编码,例如英文字符可以用1个字节表示,中文可以用3字节表示,可以节省存储空间和传输带宽(相比Unicode编码)

四、ANSI编码

ANSI是一种字符代码,为使计算机支持更多语言,通常使用 0x00~0x7F 范围的1个字节来表示1个英文字符,超出此范围的使用 0x80~0xFFFF 来编码,即扩展的ASCII编码

ANSI不是指的一种特定的编码,而是不同地区扩展编码方式的统称,各个国家和地区所独立制定的兼容ASCII,但互相不兼容的字符编码,微软统称为ANSI编码

  • 中国大陆(简体)扩展了GB2312编码

  • 中国台湾(繁体)扩展了Big-5编码

  • 中国香港扩展了HKSCS编码

  • 日本扩展了Shift_JIS编码

  • 韩国扩展了EUC-KR编码

  • ...

若存储和打开文件的编码格式不一致,基本会出现常见的火星文乱码,这个时候不要慌,选择正确的编码格式打开文件就好了

五、程序读写编码

程序打开文件需要说明文件的编码格式:text modebinary mode

区别:text mode 以 字符 为单位进行读写,而 binary mode 以 字节 为单位进行读写

参考来源

Binary VS Text Mode for File I/O Operations

字符编码

文本文件与二进制文件

编码方式之ASCII、ANSI、Unicode概述

posted @ 2022-09-22 12:25  eiSouthBoy  阅读(580)  评论(0编辑  收藏  举报