有时,咱们会碰到这样一些代码:依赖平台的默认字符集。java
在windows上开发项目,咱们使用的操做系统windows通常默认字符集是GBK;可是部署到linux上就会出现乱码问题。这个时候就蛋疼了,假如A系统但愿linux平台的默认字符集是UTF-8,B系统则但愿linux平台的默认字符集是GBK,怎么搞?好比下面的一段代码:linux
/** * 字节数组转化为字符串 */ public String bytesToString(byte[] bytes) { // 错误写法,依赖于平台的默认字符集,换个平台可能就是乱码 // return new String(bytes); // 正确写法 return new String(bytes, "UTF-8"); } /** * 字符串转化wield字节数组 */ public bytes[] StringToBytes(String content) { // 错误写法,依赖于平台的默认字符集,换个平台获得的字节数组可能就不正确了 // return content.getBytes(); // 正确写法 return content.getBytes("UTF-8"); }
还有就是从网络接口读取字节流转化为字符流,最好指定字符集。编程
好的编程习惯就是:不要让代码依赖于平台的默认字符集,指定一个明确的字符集,固然两个方向转化的字符集要一致(字符流到字节流,字节流到字符流)。
windows