`

Java编码

    博客分类:
  • JAVA
 
阅读更多

一、Java编码相关的概念

 

一、Java编码相关的概念

Java编码的概念可以从下面5点来理解和分析

1、文本文件存放在系统中的是某一编码方式下该字符串的编码

2、内存中的字符串是以字符数组的形式存储:char[],其中字符数组中存储的内容为Unicode编码,既UTF-16编码

3、ISO8859-1 进行解码不会有信息丢失,但是对一些类似包含中文的char[]编码会有信息丢失。因为

      ISO8859-1 编码将字节数组解码为字符串的时候是一个字节一个字节进行解码的所以不会有信息丢失,当对包含中文的char[]数组进行编码的时候,由于中文的Unicode编码超出了ISO8859-1编码的范围(因为UTF-16编码是用两个字节,而ISO8859-1是用一个字节编码),所以会将超出范围的字符编码为?字符,这样就照成信息丢失。

4、字符在进行转换的时候都是以Unicode作为中介的,例如:需要将ISO8859-1编码的字符串转换成UTF-8编码的字符串,需要先将该字符串转换成Unicode字符串,然后在转换成UTF-8编码的字符串。如下图:



5、Unicode(统一码,万国码,单一码) 是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码。所以个人认为当使用InputStream 操作文本时,获取到的是文本某一编码方式下的字符集编码的字节数组。使用reader操作文本时是在InputStream获取到的字节数组解码后的字符串,只是解码用的编码如果没有具体指定的话,就会采用操作系统编码。

6、编码:将UTF-16编码转换成某一特定编码

7、解码:将某一特定编码转换成UTF-16编码

8、字符串在内存中是以字符数组的形式存储:char[],其中字符数组中存储的内容为Unicode编码,既UTF-16编码。所以内存中的字符串都是以UTF-16的编码形式存在的,只有在通过String.getBytes()的时候,才会将UTF-16编码的字节数组转换成某一特定编码的字节数组形式。所以只有byte[ ] 中的内容才是特定字符集的编码,而普通的字符串在程序和内存中都是UTF-16编码,明确这一点很重要。

  • 大小: 64 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics