當我運行下面的語句,的Java:整數的Unicode表示超過2個字節字符範圍的
System.out.println("Character is "+(char)65534); //equivalent to 0xfffe
System.out.println("Character is "+(char)65535); //equivalent to 0xffff
System.out.println("Character is "+(char)65536); //equivalent to 0x10000
System.out.println("Character is "+(char)65537); //equivalent to 0x10001
我得到的輸出
Character is _ where _ is \ufffe
Character is _ where _ is \uffff
Character is
Character is
在閱讀的答案在SO爲什麼這個輸出這是因爲char
類型是2字節(這是Java的UTF-16格式發生的情況),所以第3行和第4行的輸出由於超過了2個字節的限制而爲空。所以,我看了String
類獲得超過2字節的整數unicode表示。它的一個功能codePointAt
返回字符串中一個字符的整數等值。所以,我尋找它的相反/反函數,但似乎沒有這樣的功能。
任何人都可以請我指出一個Java中的標準函數,它具有這樣的功能。如果它不存在,那麼請指導我如何從頭開始獲取代碼點的Unicode代表(Java使用高和低代理來表示3字節以上,因此有兩個代碼點)。
編輯:
的問題基本上是關心顯示爲代碼點打印語句值比0xffff
更大的Unicode描繪。
我知道它給出了代理,但是你知道如何打印它的unicode等價物嗎?假設/假設代碼點5647表示å。當這個代碼點需要一個數字,例如345678佔用三個字節的空間時,則在打印語句中,它必須顯示爲unicode字符。所以,我在問如何顯示它。你知道出路嗎? – stackoverflowery 2014-09-25 02:19:36
@NonymousNT哎呀,對不起,我誤解你在找什麼。我的編輯是否澄清事情? – 2014-09-25 03:20:30