有時,咱們會碰到這樣一些代碼:依賴平臺的默認字符集。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