3 回答
TA貢獻1801條經驗 獲得超8個贊
Unicode是一種字符集(charset),不是編碼(encoding),談不上有幾個字節,只能說有多少個碼位。
同一個碼位有N多種不同表示方式,例如Windows記事本中的Unicode其實指Unicode的UTF-16 LE表示方式,Unicode (Big Endian)指UTF-16 BE表示方式。
TA貢獻1868條經驗 獲得超4個贊
英文也是unicode的一部分java關鍵字是英文,但是其他可以不是。比如
public class Main {
public static String 獲取字符串() {
return "你好,中國";
}
public static void main(String[] args) throws InterruptedException {
System.out.println(獲取字符串());
}
}javac 編譯中有參數可以制定源代碼的編碼 -encoding <encoding> Specify character encoding used by source files所以源碼用其他編碼都是可以的,最常見的是使用UTF-8.
TA貢獻1874條經驗 獲得超12個贊
Java字符串在內存中以Unicode形式存在,再具體一點應該是UTF-16這種格式。而在源文件和編譯文件中,字符串則可以以各種可支持的編碼形式存在。簡單的說,存在文件中的字符串是多種編碼的,在它們被裝載到內存時,都轉換成了UTF-16的編碼,所以說Java中字符串是統一編碼的,這個統一是指在內存中統一。
另外,標準的Unicode占用的是4字節,并不是2字節,Java采用的UTF-16是優化存儲后的Unicode,UTF-16對于常規字(包括全世界各種語言的文字)都可以以2字節存儲,當然也有一些不在常用字范圍的東西(在Unicode字符平面中靠后的)需要用4字節來存儲,比如Emoji表情符號等。
添加回答
舉報
