前提是str存放的是漢字 一、如果是new String(str.getBytes(“gbk”),“gbk”)時(shí),可以分為兩步: 第一步:byte[] bytes=str.getBytes(“gbk”) 告訴java虛擬機(jī)將中文以“gbk”的方式轉(zhuǎn)換為字節(jié)數(shù)組。一個(gè)漢字對(duì)應(yīng)兩個(gè)字節(jié)。 第二步:String s=new String(bytes,“gbk”) // 執(zhí)行后的s就是第一步的str。 告訴虛擬機(jī)將字節(jié)數(shù)組中的字節(jié)以“gbk”的方式將每2個(gè)字節(jié)組裝成一個(gè)漢字。此漢字s就是第一步str代表的漢字。 二、如果new String(str.getBytes(“gbk”),“iso8859-1”)時(shí) 對(duì)應(yīng)的第二步便是: String s=new String(bytes,“iso8859-1”)時(shí),此時(shí)是將每1字節(jié)組裝成一個(gè)“?” 。此時(shí)的s是若干個(gè)“?”,我們可以把“?”看做是一種特殊的漢字,它代表的信息并沒有損失是可以還原回來(lái)的。 三、如果new String(str.getBytes(“gbk”),“utf-8”)時(shí) 對(duì)應(yīng)的第二步便是: String s=new String(bytes,“utf-8”)時(shí),此時(shí)是將每3字節(jié)組裝成一個(gè)漢字。此漢字s就是第一步str代表的漢字。 實(shí)際的網(wǎng)絡(luò)傳輸?shù)倪^(guò)程中,是將漢字以u(píng)tf-8編碼后在網(wǎng)上傳輸,此種方式的好處就是節(jié)省帶寬流量。IE瀏覽器中的internet選項(xiàng)下高級(jí)欄中有說(shuō)“總是以u(píng)tf-8傳輸數(shù)據(jù)”。 注意當(dāng)字節(jié)數(shù)組用iso8859-1組裝成的“?”,用utf-8編碼此特殊的漢字時(shí)就會(huì)變成2個(gè)字節(jié)。 |
|
來(lái)自: junshuai103 > 《C#》