回答
只要將它轉換爲int
:
char registered = '®';
int code = (int) registered;
其實有一個從char
到int
的隱式轉換,所以你不必明確指明它,因爲我在前面已經做了,但我會這麼做這個案例讓你明白你想要做什麼。
這會給UTF-16碼單元 - 它是一樣的Unicode代碼點在基本多語種平面定義的任何字符。 (並且只有BMP字符可以表示爲Java中的char
值。)正如Andrzej Doyle的答案所述,如果要從任意字符串獲取Unicode碼點,請使用Character.codePointAt()
。
一旦你得到了UTF-16代碼單元或Unicode碼點,但都是整數,這取決於你與他們做什麼。如果你想要一個字符串表示形式,你需要準確地確定你想要的表示形式。 (例如,如果你知道值將始終是在BMP,您可能希望與U+
前綴一個固定的4位的十六進制表示,例如"U+0020"
空間。)這是超出了這個問題的範圍,雖然,我們不知道需求是什麼。
更完整的,儘管更詳細的,這樣做的方法是使用Character.codePointAt方法。這將處理'高代理'字符,它不能用範圍內的一個整數來表示,而這個整數可以代表一個char
。
在這個例子中,你已經給這不是絕對必要的 - 如果(Unicode)的字符可以容納一個(Java)的內部char
(如registered
局部變量),那麼它必須落在\u0000
到\uffff
範圍內,你不需要擔心代理對。但是,如果您正在查看可能更高的代碼點,則可以從String/char數組中調用此方法,以便覆蓋邊緣情況。
例如,而不是
String input = ...;
char fifthChar = input.charAt(4);
int codePoint = (int)fifthChar;
使用
String input = ...;
int codePoint = Character.codePointAt(input, 4);
不僅是在這種情況下此略少的代碼,但它會處理代理對檢測你。
親愛的朋友,喬恩斯基特說,你可以找到字符小數codebut它不是字符的十六進制代碼,因爲它應該在Unicode中提及,所以你應該代表通過不十六進制編碼在Deciaml字符代碼。
有在http://unicode.codeplex.com的開源工具提供了有關characer或sentece完整信息。
所以最好是創建一個解析器,給一個字符作爲參數,並返回ahexCode作爲字符串
public static String GetHexCode(char character)
{
return String.format("{0:X4}", GetDecimal(character));
}//end
希望它能幫助
「所以你應該通過HexCode代表字符代碼而不是Deciaml」 - 它是一個號碼。在將其轉換爲字符串時,Hex和decimal只起作用,並且根本不需要這個問題。 – 2015-07-21 12:02:36
在Java中,焦炭在技術上是一個「16位整數「,所以你可以簡單地將它轉換爲int並且你會得到它的代碼。 從Oracle:
char數據類型是一個單一的16位Unicode字符。它具有 最小值'\ u0000'(或0)和最大值'\ uffff'(或 65,535)。
所以你可以簡單地將它轉換爲int。
char registered = '®';
System.out.println(String.format("This is an int-code: %d", (int) registered));
System.out.println(String.format("And this is an hexa code: %x", (int) registered));
它甚至可以與歐元字符'String.format(「%x」,(int)'€')== 0x20ac =='\ u20ac'' – ATorras 2015-06-11 13:07:20
對我來說,只有「Integer.toHexString(註冊)」工作,我想要的方式:
char registered = '®';
System.out.println("Answer:"+Integer.toHexString(registered));
這個答案會給你唯一的字符串表示什麼通常與表中。 Jon Skeet的回答更多解釋。
正如我在回答的評論中指出的,那是因爲「你的方式想要「是產生代碼的十六進制表示 - 這不是這個問題的要求。代碼本身是一個整數; 「如何創建一個整數的十六進制表示」的問題是另一回事。 (對於Unicode代碼點,您還應該考慮您需要多少個十六進制數字 - 例如,您可能希望使用4個BMP字符和6個其他字符,或者總是6個,或者總是偶數)... – 2015-07-21 12:24:16
它明確你寫的內容。是什麼讓你認爲代碼是按整數定義的?對我而言,代碼是符號的組合,不一定是數字或整數。你的答案真的非常有用,但最終我花了半個小時,而我發現如何獲得代碼,據我瞭解,也許它會爲其他用戶節省一些免費的時間。 – 2015-07-21 12:35:18
Unicode就是這樣定義它的。來自http://www.unicode.org/standard/principles.html:「Unicode標準定義的每個代碼元素都分配一個編號,每個編號稱爲代碼點,當文本中提到時,以前綴「U +」的形式以十六進制形式列出,例如,代碼點U + 0041是十六進制數0041(等於十進制數65),它表示Unicode標準中的字符「A」。我已經編輯了我的答案,明確了爲什麼「字符代碼」X「的答案是一個數字,而不是一個字符串。 – 2015-07-21 12:38:50
- 1. C獲取字符的Unicode代碼點
- 2. 從Unicode代碼點獲取字符 - C++
- 3. 如何使用Ruby 1.8.6獲取unicode字符的代碼?
- 4. 如何從UTF-8字符串的每個字符獲取UNICODE代碼?
- 5. Android的InputMethodService - 如何獲取unicode字符?
- 6. 獲取輸入字符的Unicode代碼點 - Objective C
- 7. Python unicode字符代碼?
- 8. Unicode代碼字符串
- 9. 如何迭代unicode字符?
- 10. 如何在Swift中獲得字符/字符串的unicode代碼點表示?
- 11. 如何將Unicode代碼點轉換爲Unicode字符串?
- 12. 獲取Java代碼中的空字符文字錯誤指定的unicode文字
- 13. 如何獲取Unicode字符串的Ruby子字符串?
- 14. 如何獲取與Unicode字符名稱對應的字符?
- 15. 從字符獲取字符代碼
- 16. 如何迭代Java字符串的unicode代碼點?
- 17. 獲取數字的字符代碼
- 18. 如何Unicode編碼字符變量轉換爲Unicode字符python2
- 19. 如何在Bash中獲取Unicode字符或字符值?
- 20. Unicode中的保留字符代碼
- 21. 如何解碼字符串化的Unicode?
- 22. 如何解碼unicode字符串的Python
- 23. 如何獲取按字母順序排列的unicode字符?
- 24. 如何在VB.Net中表示Unicode Chr代碼字符串文字?
- 25. 如何獲得Unicode字符的字形unicode表示
- 26. 獲取字符的Alt代碼
- 27. C# - 獲取字符的ANSI代碼值
- 28. 在Lua獲取代碼點的字符?
- 29. 獲取VB中字符的Unicode值
- 30. Python獲取unicode字符的郵箱
這將工作爲每個字符? – Geo 2010-01-05 14:22:55
@Geo:基本多語言平面中的任何內容,是的。您不能在Java中以單個字符表示U + FFFF以上的字符。但是char被有效地定義爲UTF-16碼點。 – 2010-01-05 14:26:49
它適用於每個代表'U + FFFF'下的Unicode字符的'char',但不適用於每個Unicode字符,因爲'char'不能代表所有的Unicode。根據你的'char'的來源,你可能需要做一些更復雜的事情(並且真的應該爲此做好準備)。 – JaakkoK 2010-01-05 14:36:56