在程序中很容易出现中文乱码,主要原因是有太多的编码方式。

有一个很好的网站可以查看汉字的编码:点击打开链接

计算机字符编码详解一

“中国”两字在不同的编码环境下的值。


首先来看一下常用的编码有哪些,截图自Notepad++。其中ANSI在中国大陆即为GBK(以前是GB2312),最常用的是 GBK 和 UTF8无BOM 编码格式。
后面三个都是有BOM头的文本格式,UCS-2即为人们常说的Unicode编码,又分为大端、小端。
所谓BOM头(Byte Order Mark)就是文本文件中开始的几个并不表示任何字符的字节
UTF8的BOM头为: 0xEF 0xBB 0xBF
Unicode大端模式为: 0xFE 0xFF
Unicode小端模式为: 0xFF 0xFE

计算机字符编码详解一

BIg5(大五码)是繁体中文,这里我们就不做研究了,“国”字在大五码中无编码,会被英文?替代。

Notepad++ 使用二进制或16进制查看文件:点击打开链接  这个插件也有bug ,在编码选择gb2312时 ,输入中文后在 看其16进制,竟然是utf8 编码中的16进制(可能我是个案)。

我们可以使用binary viewer这个软件查询。点击下载


在ASCII码中1是49 ,A是65;

1、gb2312:

计算机字符编码详解一

gb2312中 中文和数字只占一个字节,中文占两个字节。

1和A我们很容易识别,D6 D0(16进制)为什么是“中”呢?  上面我们可以看到 “中” 区位码(GB2312)为5448 ,,D6 D0(16进制)和5448不相等呀!

因为5448不是“中”的真实编码,只是区位码。在网上收到GB2312的编码表  ,找到‘中’ 字 。

计算机字符编码详解一

一般编码方式是:0xA0+区号,0xA0+位号。   因此5448会被翻译成  

A0(16进制)+54(十进制)=D6(16进制)

A0(16进制)+48(十进制)=D0(十进制)

5448的真实编码为:D6 D0(16进制)


2.gbk     注:ANS即为gbk

计算机字符编码详解一

gbk中 中文和数字只占一个字节,中文占两个字节。

3、utf-8 无 bom

计算机字符编码详解一

utf-8中 中文和数字只占一个字节,中文占三个字节。

3、utf-8 有 bom

计算机字符编码详解一

有bom开头标志位,是为了告诉打开该文件的程序,请以utf8的方式打开我。

4、Unicode-2大端 

计算机字符编码详解一

unicode 有双字节,四字节等我们使用的是双字节。

unicode 中 英文、数值、中文都占2个字节。


5、Unicode-2小端

计算机字符编码详解一

大端和小端的区别就是 一个字的两个字节对掉。



计算机字符编码详解二  


相关文章:

  • 2021-06-21
  • 2022-12-23
  • 2021-09-12
  • 2021-06-05
  • 2022-12-23
猜你喜欢
  • 2021-09-27
  • 2021-05-31
  • 2021-11-15
相关资源
相似解决方案