编码问题小汇总

文章探讨了ASCII、LATIN-1、Unicode以及各种UTF编码(如UTF-8、UTF-16、UTF-32)的特性和范围。它提到了UTF-8在存储网络传输时的效率,UTF-16对常用字符的优化,以及GBK作为非Unicode标准的自定义编码。同时,指出了Java中使用两个字节的Unicode可能导致的显示问题,以及编码不一致在字符串操作和流处理中可能引发的问题。
摘要由CSDN通过智能技术生成

ASCII一个字节,只用7位,范围0x0-0x7f

LATIN-1(iso-8859-1)也是一个字节,兼容ASCII,范围0x0到0xff

unicode给每一个字符一个值,是规范,0x0到0x10ffff,每间隔ffff分一个plate,共17个

utf8,变长 1-6,0开头就是ASCII ,以1开头,那么连续个1的个数就是后面跟了几个字节,后面的字节10开头,然后用unicode的值依次去填充空位(高位补0),在网络传输上确实可以节省空间

utf16 变长2或者4,0xffff范围内就是2个 0x10000到0x10ffff就是4个,高2位字节以110110开头,

低2位字节以110111开头,然后也是用unicode二进制去填充

utf32 定长4,范围0x0到0x10ffff

gbk自定义编码值,没有遵守unicode规范

至于ucs-2 ucs-4 则是用定长的2位和4位保存unicode,其二进制和unicode的code point一致

java char是用2个字节的unicode,所以还是有很多字符没法正常显示的

为什么现在String有LATIN-1和UTF16,utf16 2个字节的基本都是常用的,而4个字节表示的就不常用了,如果认为字符串都是常用的,那么用utf16的某些字符串操作就更快

字符串编码问题 new和getbytes指定的编码不一致可能就会出现问题

流操作InputStreaem和OutputStream采用的编码不一致会出问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值