什么是Unicode
Unicode编码是
一种
计算机字符
编码标准
,其实个人认为叫字符集更为准确;而我们熟悉的
UTF-8 UTF-16 UTF-32
是
Unicode
的
具体实现
(
怎么存储在计算机
)
。
为何要用Unicode?
1
、
Unicode
有利于应用程序的本地化。
2
、使用
Unicode
,只需发布一个二进制(
.exe
或
DLL
)文件,即可支持所有语言。
3
、
Unicode
提升了应用程序的效率,因为代码执行速度更快,占用内存更少。
windows
内部的一切工作都是使用
Unicode
字符和字符串来进行的。所以假如我们坚持传入
ANSI
字符或者字符串,
windows
就会被迫分配内存,并将
ANSI
字符或者字符串转换为等价的
Unicode
形式。
4
、使用
Unicode
,应用程序能轻松调用所有尚未弃用的
windows
函数,因为一些
windows
函数提供的版本只能处理
Unicode
字符和字符串。
5
、使用
Unicode
,能保证应用程序的代码能够轻松地操控我们自己的资源(其中的字符串总是
Unicode
形式的)
总结:
也就是说直接使用Unicode
可以省略系统进行编码转换的过程,从而
提高程序性能
Unicode的优势主要在于对网络方面,宽字符能够更好的支持跨平台数据传递。
Java文件编译后形成class
这里Java文件的编码可能有多种多样,但
Java编译器会自动将这些编码按照Java文件的编码格式正确读取后产生class文件
,
这里的class文件编码是Unicode编码(具体说是UTF-16be编码)。
因此,在Java代码中定义一个字符串:
String s="汉字";
不管在编译前java文件使用何种编码,在编译后成class后,他们都是一样的----Unicode编码表示。JVM里面的任何字符串资源都是Unicode,就是说,任何String类型的数据都是Unicode编码。
JVM
JVM加载class文件读取时候使用Unicode编码方式正确读取class文件,那么原来定义的String s="汉字";在内存中的表现形式是Unicode编码。
与此同时,值得注意的是:Java程序 通过
JVM
才具有跨平台的特性,但
JVM本身并不是跨平台的
。也就是说,不同操作系统的
JVM
是不同的,
Windows
平台的
JVM
不能用在
Linux
中,反之亦然。简而言之,也就是说,不同的平台本身有着不同的
JVM
,是
JVM
成就了
Java
的跨平台特性。
Java采用了
unicode
字符集,使之易于国际化。