當前位置:首頁 » 編程語言 » Java中文代碼

Java中文代碼

發布時間: 2025-09-14 15:39:33

java中文亂碼,能說下string.getBytes()和new String()轉碼是,具體點。

1、Java中,【String.getBytes(String decode)】的方法,會根據指定的decode,編碼返回某字元串在該編碼下的byte數組表示,例如:

byte[] b_gbk = "中".getBytes("GBK");
byte[] b_utf8 = "中".getBytes("UTF-8");
byte[] b_iso88591 = "中".getBytes("ISO8859-1")

上面三行代碼表示:分別返回「中」這個漢字在GBK、UTF-8和ISO8859-1編碼下的byte數組表示,此時b_gbk的長度為2,b_utf8的長度為3,b_iso88591的長度為1。

2、而通過【new String(byte[], decode)】的方式來還原這個「中」字時,實際是使用decode指定的編碼來將byte[ ]解析成字元串,例如:

String s_gbk = new String(b_gbk,"GBK");
String s_utf8 = new String(b_utf8,"UTF-8");
String s_iso88591 = new String(b_iso88591,"ISO8859-1");

s_gbk和s_utf8都是「中」,而只有s_iso88591是一個不認識 的字元,因為ISO8859-1編碼的編碼表中,根本就沒有包含漢字字元,當然也就無法通過"中".getBytes("ISO8859-1")。

因此,通過【String.getBytes(String decode)】方法來得到byte[ ]時,要確定decode的編碼表中確實存在String表示的碼值,這樣得到的byte[ ]數組才能正確被還原。

(1)Java中文代碼擴展閱讀

java中文編碼避免亂碼

1、為了讓中文字元適應某些特殊要求(如http header頭要求其內容必須為iso8859-1編碼),可能會通過將中文字元按照位元組方式來編碼的情況,比如:

String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1")

2、上述例子中的s_iso8859-1字元串實際是三個在 ISO8859-1中的字元,在將這些字元傳遞到目的地後,目的地程序再通過相反的方式:

String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")

來得到正確的中文漢字。這樣就既保證了遵守協 議規定、也支持中文。

3、String.getBytes(String decode)方法會根據指定的decode編碼返回某字元串在該編碼下的byte數組表示這里是encode ,not decode,從字元串到位元組數組是編碼的過程,從位元組數組到字元串(即 new String(byte[] , charsetname))才是解碼的過程。

熱點內容
編譯預處理時列印宏的值 發布:2025-09-14 17:11:53 瀏覽:61
linuxvim插件 發布:2025-09-14 17:11:04 瀏覽:941
linux導航 發布:2025-09-14 17:08:57 瀏覽:501
問道登陸器源碼 發布:2025-09-14 17:08:01 瀏覽:904
為什麼安卓手機總是提示軟體停運 發布:2025-09-14 17:01:27 瀏覽:962
破解exe加密視頻軟體 發布:2025-09-14 16:44:18 瀏覽:279
29乘法手指速演算法 發布:2025-09-14 16:11:30 瀏覽:836
iosandroidhtml5 發布:2025-09-14 16:10:39 瀏覽:931
systemuiapk反編譯 發布:2025-09-14 15:46:44 瀏覽:1000
php本地安裝 發布:2025-09-14 15:44:59 瀏覽:352