现今使用的绝大多数操作系统都采用ASCII代码集表示字符。ASCII最初使用7位码表示大小写字母、数字0~9以及若干控制字符,如NUL和EOT。在西欧,用户希望代码集能表示他们本国字符集的所有字符,ASCII代码集因而被扩展到8位,即增加至128个字符,用于表示英文中不存在的各种西欧语言的字符。这种扩展的8位代码位ISO8859-Latin-1代码集。
Java需要使用更普遍的解决方案,用于支持拥有数千个表意文字的亚洲语言。这种解决方案选用的是Unicode。Unicode是ISO标准16位字符集,支持65 536个不同的字符。其中大约有21 000个字符专门用于中文、日文和韩文的表意文字。ISO Latin-1代码集占用Unicode的前256个字符,实际上是Unicode的子集,就像ASCII是ISO Latin-1的子集一样。
Java内部使用2个字节表示每个字符,采用Unicode编码。如果只用到ASCII或ISO Latin-1,则编码是相同的。但每个字符将多占用一个额外的字节。
在UNIX、Windows和Macintosh系统上,默认的字符集都是基于8位的。当Java从这些系统中读取一个字符时,操作系统只提供一个8位的字节,但Java总是把他存放到16位的数据类型中,并且重视按16位进行处理。当需要读入或写出16位Unicode字符和ASCII字符时,Java能采用默认的方式正确执行相应的转换。并且,如果需要某些不同的特殊处理,也能找到解决办法。
【总结】Java和Unicode字符集
最新推荐文章于 2024-02-23 01:48:16 发布