`
pwrd
  • 浏览: 8669 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java编码

阅读更多
JVM使用UTF-16(具体定义unicode的存储方式)进行编码,但是所有的string类型在内存都是unicode格式。
而我们新建一个字符串对象:
String s = new String("apple");

实际上经过了编码的转换,因为"apple"首先是从源代码中读取的,使用本地系统默认的编码,比如我们的xp使用GB...编码,那么这个字符串对象实际上把gb2132编码转换成.class的编码utf-8,之后转换成字符串默认utf-16编码格式后存储到内存中。

可以使用方法getBytes()来获取String的不同编码下的字节数组:
byte[] bs = s.getBytes("ISO8859-1");

该方法把unicode格式下的字节编码转化成了ISO-8859-1格式下的字节编码。

new String(s.getBytes(),"iso8859-1");

进行了编码转换,首先获得的是s的unicode的字节编码,然后转换成iso8859-1编码格式。但是我们读取的时候还是按照unicode进行解码的,所以还是乱码。


数据库也有自己的编码,例如utf-8。传入指定编码格式的字节流可以让数据库显示正确的数据,否则将会显示乱码,但是对于外部程序,如果知道传入的编码方式,就算数据库显示乱码,也可以以正确的编码方式对数据显示。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics