Unicode与UTF-8

来源:互联网 发布:用sql语句查询年龄在 编辑:程序博客网 时间:2024/06/05 14:43

Unicode与UTF-8的关系

Unicode是字符集,是一张大表,给每个字符指定一个数字。但是计算机只认0和1,这个数字怎么在计算机中存储呢?用多少位?这就是UTF-8的事了。看了下面这张图,也许就明白了

这里写图片描述

UTF-8

UTF-8是一种变长的编码方式,它把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

UTF-8编码规则如下:

  1. 单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码完全相同;

  2. n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其余空位填充该字符unicode码,高位用0补足。

举粟

一个字节:0xxxxxxx
两个字节:110xxxxx 10xxxxxx
三个字节:1110xxxx 10xxxxxx 10xxxxxx
四个字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Java与UTF-16

Unicode开始制订时,计算机的存储器容量极大地发展了,空间再也不成为问题了。于是 ISO 就直接规定必须用两个字节,也就是16位来统一表示所有的字符。

Java的char类型就是UTF-16编码,还记得char类型占2个字节吗?

0 0