计算机字符集编码

本文深入探讨字符编码基础知识,包括ASCII、ISO8859-1、GB2312、GBK和Unicode。重点解析Unicode的UTF-8编码方式,阐述其解决乱码问题的关键,并对比ANSI编码。同时,提到了字符集与代码页的概念,以及如何处理不同编码间的转换问题。
摘要由CSDN通过智能技术生成

目录

一、有关编码的基础知识

二、字符集


一、有关编码的基础知识

1、位 bit 最小的单元

字节 byte 机器语言的单位 1byte=8bits

1KB=1024byte

1MB=1024KB

1GB=1024MB

2、二进制 binary

八进制 octal

十进制 decimal

十六进制 hex

3、字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符号,数字等。

字符集:字符集是多个符号的集合,每个字符集包含的字符个数不同。

字符编码:字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一个字符用多少字节 表示等问题,则是由编码来决定的。计算机要准确的处理各种字符集文字,需要进行字符编码, 以便计算机能够识别和存储各种文字。

二、字符集

ASCII:美国标准信息交换码。用一个字节的7位可以表示。

ISO8859-1:拉丁码表。欧洲码表。用一个字节的8位表示。

GB2312:中国的中文编码表。最多两个字节编码所有字符

GBK:中国的中文编码表升级,融合了更多的中文文字符号。最多两个字节编码
Unicode:国际标准码,融合了目前人类使用的所有字符。为每个字符分配唯一的字符码。所有的文字都用两个字节来表示。
UTF-8:变长的编码方式,可用1-4个字节来表示一个字符。

Unicode不完美,这里就有三个问题:

        第一个是,我们已经知道,英文字母只用一个字节表示就够了,

        第二个是,如何才能区别Unicode和ASCII?计算机怎么知道两个字节表示一个符号,而不是分别表示两个符号呢?

        第三个是,如果和GBK等双字节编码方式一样,用最高位是1或0表示两个字节和一个字节,就少了很多值无法用于表示字符,不够表示所有字符。Unicode在很长一段时间内无法推广,直到互联网的出现。
        面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8就是每次8个位传输数据,而UTF-16就是每次16个位。这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。
        Unicode只是定义了一个庞大的、全球通用的字符集,并为每个字符规定了唯一确定的编号,具体存储成什么样的字节流,取决于字符编码方案。推荐的Unicode编码是UTF-8和UTF-16。

Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
—————————————————————–
0000 0000-0000 007F | 0xxxxxxx(兼容原来的ASCII)
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

举例:
尚: Unicode编码值:23578  十六进制:5C1A  二进制: 0101 1100 0001 1010
1110xxxx 10xxxxxx 10xxxxxx
1110 0101 1011 0000 1001 1010
UTF-8编码:1110 0101 1011 0000 1001 1010

ANSI编码,通常指的是平台的默认编码, 例如英文操作系统中是ISO-8859-1,中文系统是GBK

早期字符编码、字符集和代码页等概念都是表达同一个意思。例如 GB2312 字符集、GB2312编码,936 代码页,实际上说的是同个东西。

但是对于 Unicode 则不同,Unicode 字符集只是定义了字符的集合和唯一编号,Unicode 编码, 则是对 UTF-8、UCS-2/UTF-16 等具体编码方案的统称而已,并不是具体的编码方案。所以当需 要用到字符编码的时候,你可以写 gb2312,codepage936,utf-8,utf-16,但请不要写Unicode。 造成乱码的原因就是因为使用了错误的字符编码去解码字节流,因此当我们在思考任何跟文本显示有关的问题时,请时刻保持清醒:当前使用的字符编码是什么。只有这样,我们才能正确分析和处理乱码问题。

常见 CharSet 有:GBK、GB2312、US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE、UTF-16

计算机编码与解码&编码表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀神lwz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值