這可能是一個愚蠢的問題,但是...說我有一個String
像4e59
它代表一個特殊的Unicode字符。如何將\u
添加到該字符的開頭,以便它正確顯示?我試過最簡單的解決方案:Java unicode問題
String str = "4e59";
System.out.println("\\u"+str);
和其他幾個變種,我錯過了什麼?
這可能是一個愚蠢的問題,但是...說我有一個String
像4e59
它代表一個特殊的Unicode字符。如何將\u
添加到該字符的開頭,以便它正確顯示?我試過最簡單的解決方案:Java unicode問題
String str = "4e59";
System.out.println("\\u"+str);
和其他幾個變種,我錯過了什麼?
ü在編譯時解析的\,無法運行時間,所以只要你的前綴字符串以「\ U」是行不通的。
可以使用的Integer.parseInt在運行時做此分析:
System.out.println((char)Integer.parseInt("4e59", 16));
您需要將其轉換爲char
:
System.out.println((char) Integer.parseInt("4e59", 16));
Integer.valueOf()返回整數對象,然後需要被轉換爲int,(然後到一個char),這是多餘的。 Integer.parseInt()直接返回一個int – newacct 2009-10-14 08:13:00
這是真的。我改變了我的答案。 – 2009-10-14 18:21:32
其他人已經與如何做到這一點回答,但如果你有興趣,我可以解釋爲什麼在前面加上"\u"
沒有工作:"\uXXXX"
序列在編譯時由javac(由詞法分析器實際上是編譯的第一步)轉換爲相應的unicode字符。在你的代碼中,詞法分析器看到一個只包含"\u"
的字符串,因此不會觸及它。
\uXXXX
編碼將工作在任何地方,而不僅僅是在字符串內部。這兩個行的是相同的,如果你把他們在一個Java源文件:
int i;
\u0069\u006E\u0074 \u0069\u003B
母牛的聖母! – Amarghosh 2009-10-14 09:52:47
如果brandon有興趣,這也適用: char c = 0x4E59; – Gunslinger47 2009-10-14 06:21:00