s按照gbk解码,在按照gbk组合成String,为什么就不是乱码了呢? 那2这个字符串是最终是什么编码 utf-8还是gbk
学习是最好的投资!
1:s.getBytes()不帶參數的話會呼叫jdk預設的編碼(你的可能是utf-8)將字串解碼成byte[],然後你使用gbk的編碼方式重新將byte[]編碼成字串,所以會出現亂碼。
2.s.getBytes('gbk')你將字串按照gbk的方式解碼後又重新使用gbk方式編碼,所以不會出現亂碼。
樓上說的沒錯,補充一點jdk的預設編碼是file.encoding中指定的编码,可以通过Dfile.encoding=GBK這樣來修改JVM的預設編碼。
file.encoding
Dfile.encoding=GBK
再補充一點編解碼的知識,「你好」這個中文要在電腦中傳輸,必然要把它轉換為2進位。怎麼轉二進位就是這裡說的解碼。 編碼的方式有很多種,例如Unicode字元集。這個字元集裡面就是各種符號對應的數字,例如你用2345來表示,然後按照一定的方式轉換的二進位(具體怎麼轉換可以網路上找一下具體過程)。 Unicode字符集。这个字符集里面就是各种符号对应的数字,比如你用2345来表示,然后按照一定的方式转换的二进制(具体怎么转换可以网上找一下具体过程)。接收到这一串二进制数,怎么转为汉字就是这里说的编码。编码需要按照一定的方式去解才能得到正确的字符对应关系,比如你的二进制为0101010010,需要按照utf-8的方式去编码才能得到你接收到這一串二進制數,怎麼轉為漢字就是這裡說的
Unicode
你
0101010010
1:s.getBytes()不帶參數的話會呼叫jdk預設的編碼(你的可能是utf-8)將字串解碼成byte[],然後你使用gbk的編碼方式重新將byte[]編碼成字串,所以會出現亂碼。
2.s.getBytes('gbk')你將字串按照gbk的方式解碼後又重新使用gbk方式編碼,所以不會出現亂碼。
樓上說的沒錯,補充一點jdk的預設編碼是
file.encoding
中指定的编码,可以通过Dfile.encoding=GBK
這樣來修改JVM的預設編碼。再補充一點編解碼的知識,「你好」這個中文要在電腦中傳輸,必然要把它轉換為2進位。怎麼轉二進位就是這裡說的解碼。
編碼🎜。編碼需要按照一定的方式去解才能得到正確的字元對應關係,例如編碼的方式有很多種,例如
Unicode
字元集。這個字元集裡面就是各種符號對應的數字,例如你
用2345來表示,然後按照一定的方式轉換的二進位(具體怎麼轉換可以網路上找一下具體過程)。Unicode
字符集。这个字符集里面就是各种符号对应的数字,比如你
用2345来表示,然后按照一定的方式转换的二进制(具体怎么转换可以网上找一下具体过程)。接收到这一串二进制数,怎么转为汉字就是这里说的编码。编码需要按照一定的方式去解才能得到正确的字符对应关系,比如
你
的二进制为0101010010
,需要按照utf-8的方式去编码才能得到你
接收到這一串二進制數,怎麼轉為漢字就是這裡說的你
的二進位為0101010010
,需要按照utf-8的方式去編碼才能得到你
這個符號並顯示出來。 🎜