Java基础学习总结笔记<4>ASCII码,Unicode码,UTF-8码

一. 编码简介

在计算机内部 所有数据都使用 二进制表示 。每一个二进制位 bit 有 0 和 1 两种状态,因此8个二进制位就可以组合出 256 种状态 这被称为一个字节 byte 。一个字节一共可以用来表示 256 种不同的状态 每一个状态对应一个符号 就是 256 个符号 从000000011111111

  • 字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符号,数字等。
  • 字符集:字符集是多个符号的集合,每个字符集包含的字符个数不同。
  • 字符编码:字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一个字符用多少字节表示等问题,则是由编码来决定的。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

二. ASCII码

上个世纪 60 年代 美国制定了一套字符编码 对英语字符与二进制位之间的关系做了统一规定 。 这被称为ASCII码 。ASCII 码一共规定了128个字符的编码 ,比如空格 SPACE是32二进制 00100000 大写的字母 A 是 65 二进制 01000001 ,这128 个符号 包括 32 个不能打印出来的控制符号只占用了一个字节的后面7位最前面的1位统一规定为0 。

  • 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 个特殊符号字符、外来语字母和图形符号。

缺点

  • 不能表示所有字符 。
  • 相同的编码表示的字符不一样 比如 130 在法语编码中代表了 é 在希伯来语编码中却代表了字母 Gimel

三. Unicode码

Unicode 一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用 Unicode 没有乱码的问题 。

缺点
Unicode 只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储:无法区别 Unicode 和 ASCII :计算机无法区分三个字节表示一个符号还是分别表示三个符号。另外, 我们知道,英文字母只用一个字节表示就够了,如果Unicode 统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是 0 ,这对于存储空间来说是极大的浪费。

四. UTF-8码

  • UTF 8 是在互联网上使用最广的一种 Unicode 的实现方式。
  • UTF 8 是一种变长的编码方式。它可以使用16个字节表示一个符号,根据 不同的符号而变化字节长度。

UTF 8 的编码规则:

  • 对于单字节的 UTF 8 编码,该字节的最高位为 0 ,其余 7 位用来对字符进行编码(等同于ASCII 码)。

  • 对于多字节的 UTF 8 编码,如果编码包含 n 个字节,那么第一个字节的前 n 位为 1 ,第一个字节的第 n+1 位为 0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为 " 10",其余 6 位用来对字符进行编码。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值