购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

陷阱12

小心谨慎
——字节数组转换为字符串乱码

字节数组在Java程序开发中经常使用,在Java中可以使用new关键字创建字节数组,也可通过其他对象提供的方法获得字节数组对象,例如,可以通过String类的getBytes()方法将字符串转换为字节数组,并且在需要时还可以将字节数组转换为字符串或其他类型。

在字符串和字节数组之间相互转换时,与特定的字符集有关,如果字符集不一致或不支持指定的语言就会出现乱码,在字符串和字节数组之间进行转换时,如果不指定字符集,使用系统默认的字符集,那么在系统的默认字符集不一致或不支持指定的语言时,转换就会出现乱码,所以在使用时,要注意所使用的字符集。

示例:

说 明

运行本示例,程序将输出“Java??”这样的乱码,这与所使用的字符集编码有关,由于ISO-8859-1 编码不支持中文语言,所以程序出现了乱码,从而导致有些信息无法看到。假设在程序中没有为代码指定字符集编码,而是使用系统默认的字符集,如果系统默认的字符集恰好也是ISO-8859-1 的话,程序也一样会出现乱码,所以一定要使用支持指定语言的字符集编码。

提 示

如果在程序中使用了字符集编码,则一定要对使用字符集编码的语句进行异常处理,例如,可以使用try…catch进行处理,否则程序会发生不支持的编码异常。

下面的示例对上一个示例做了改进,使用了对中文语言支持的编码UTF-8,所以程序能够正常输出,而不会出现乱码。

示例:

说 明

运行本示例,程序输出了“Java编程”这样的信息,这是我们想要的结果,这是由于在将字符串转换为字节数组,与将字节数组转换为字符串时,都使用了支持中文语言的编码UTF-8,所以程序在任何系统下运行都不会出现乱码。 IcNINd8OKNf0c8lw11RGJub+Y7j7L6bBXy/3aIoQEV2AM9Udb1gduKXI7SCh9Kpc

点击中间区域
呼出菜单
上一章
目录
下一章
×