计算机字符编码

一、有关编码的基础知识

1.   位           bit               最小的单元

      字节       Byte            机器语言的单元   1Byte = 8 bit    1KB=1024Byte  1MB=1024KB    1GB=1024MB

2 .         二进制    binary  八进制      octal        十进制     decimal        十六进制   hex

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

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

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

ANSI

      American National Standard Institute  美国国家标准学会,在大陆即为GBK(国标,扩展,拼音的首字母)(以前的GB2312)

ASCII (一共128个字符)

       American Standard Code for Information Interchange  美国信息交换标准码  

计算机一开始发明的时候是用来解决数字计算的问题,后来人们发现,计算机还可以做更多的事,例如文本处理。但由于计算机只识“数”,因此人们必须告诉计算机哪个数字来代表特定字符,例如 65 代表字母 ‘A’,66代表字母 ‘B’,以此类推。但是计算机之间字符-数字的对应关系必须是一致,否则就会造成同一段数字在不同计算机上显示出来的字符不一样。因此美国国家标准协会ANSI制定了一个标准,规定了常用字符的集合以及每个字符对应的编号,这就是ASCII字符集(Character Set,也称ASCII码。其中:

  • 0 ~ 31 及 127(共33个)是控制字符或通信专用字符(其余为显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)
  • 32 ~ 126(共95个)是字符 (32是空格),其中48~57为 0到 9 十个阿拉伯数字。
  • 65 ~ 90 为 26个大写英文字母,97~122 号为26个小写英文字母,其余为一些标点符号、运算符号等。
  • 后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII码允许将每个字符的第8位用于确定附加的128个特殊字符、外来语字母和图形符号。
  • 计算机字符编码_第1张图片
  • 计算机字符编码_第2张图片

 Unicode (一共65536个字符)(万国码)

        虽然通过使用不同字符集,我们可以在一台机器上查阅不同语言的文档,但是我们仍然无法解决一个问题;如果一份文档中含有不同国家的不同语言的字符,那么无法在一份中显示所有字符。为了解决这个问题,我们需要一个全人类我达成共识的巨大的字符集,这就是Unicode字符集。  

  • 开头0~127部分和ASCII完全一样,但是从128开始包含有更多字符
  • Unicode字符集涵盖了目前人类使用的所有字符,并为每一个字符进行统一编码,分配唯一的字符码(Code Point)。Unicode字符集将所有字符按照使用上的频繁度划分为17个层面(Plane),每个层面上有2^{16} = 65536 个字符码空间。
  • 其中第0个层面BMP,基本涵盖了当今世界用到的所有字符。其他的层面妖魔是用来表示一些远古时期的文字,要么是留作扩展。我们平常用到的Unicode字符,一般都是位于BMP层面上的。目前Unicode字符集中尚有大量字符空间未使用。

UTF-8 

  • UTF-8就

是在互联网上使用最广的一种Unicode的实现方式。

 代码演示

package com.atguigu;

public class Homework3 {

    public static void main(String[] args) {

        char character = '1';

        //这个时候字符 1 不用转成ASCII
        System.out.println(character);//1

        //把字符型 1 强转为 int型需要转为 ASCII对应的值
        System.out.println((int)character);//49

        //这个时候要和int型 0相加,所以字符 1 应该转成ASCII值对应的字符是49
        System.out.println(character + 0);//49

        char china = '中';

        System.out.println(china);//中

        //要把 中 字转为Unicode对应的值
        System.out.println((int) china);//20013

        System.out.println(china + 0);//20013
    }
}

计算机字符编码_第3张图片

 

你可能感兴趣的:(#,Java语言概述,字符编码)