(請(qǐng)注意,我用這些術(shù)語(yǔ)中的一些松散/通俗地解釋了一個(gè)更簡(jiǎn)單的解釋?zhuān)匀挥|及了關(guān)鍵點(diǎn)。)
一個(gè)字節(jié)只能有256個(gè)不同的值,即8位。
由于字符集中有超過(guò)256個(gè)字符的字符集,通常不能簡(jiǎn)單地說(shuō)每個(gè)字符都是一個(gè)字節(jié)。
因此,必須有描述如何將字符集中的每個(gè)字符轉(zhuǎn)換為字節(jié)序列的映射。有些字符可能映射到單個(gè)字節(jié),但其他字符則必須映射到多個(gè)字節(jié)。
這些映射是編碼,因?yàn)樗鼈兏嬖V您如何將字符編碼為字節(jié)序列。
對(duì)于Unicode,在很高的級(jí)別上,Unicode試圖為每個(gè)字符分配一個(gè)唯一的數(shù)字。顯然,這個(gè)數(shù)字必須比字節(jié)寬一些,因?yàn)橛谐^(guò)256個(gè)字符:)Java使用Unicode的一個(gè)版本,其中每個(gè)字符都被分配一個(gè)16位值(這就是為什么Java字符有16位寬,整數(shù)值從0到65535)。當(dāng)您獲得Java字符的字節(jié)表示時(shí),您必須告訴JVM您想要使用的編碼,這樣它就知道如何為該字符選擇字節(jié)序列。