[英]How to convert Special Character 'β' to its unicode
我想使用代碼將'β'轉換為它的 uni-code 'U+03B2' 。 但是當我嘗試轉換它時,我得到了'63'作為它的整數值,它是'?'的值。 特點。 它沒有轉換為正確的值。 有什么方法可以獲得'β'的正確值,即十進制'946' ,十六進制'03B2' 。
我試過了:
int code = 'β';
byte[] b = { (byte)code };
String s = new String(b, "UTF-8");
以下是各種形式的值:
int code = 'β';
System.out.println(code); // 946 as an int
System.out.println(Integer.toString(code)); // 946 as a String
System.out.println(Integer.toHexString(code)); // 3b2
System.out.println(String.format("%04x", code)); // 03b2
System.out.println(String.format("%04x", code).toUpperCase()); // 03B2
(編輯:看過其他答案后,我現在知道您可以使用格式字符串"%04X"
直接以大寫形式獲取答案。)
如果 UTF-8 不是您的平台默認字符編碼,您需要確保源文件以 UTF-8 編碼保存,然后在編譯時指定 -encoding -encoding UTF-8
選項(或其他支持的字符編碼) β
)。
您的代碼是錯誤的,因為您正在使用一個 16 位的char
並將其切成兩半,只保留低 8 位。 縮小強制轉換可能會破壞數據; 他們必須明確地寫出來,讓你思考你在做什么。
你的代碼是這樣的:
int code = 0x000003B2;
byte[] b = { 0xB2 };
字節序列 0xB2 不是有效的 UTF-8,因此使用字符串s
的替換字符
(U+FFFD) 對其進行解碼。 如果您的輸出設備未配置為顯示該字符,它將在輸出時與不同的替換字符交換, ?
.
如果您在編輯器和編譯器中得到正確的編碼,這應該可以工作:
int code = 'β';
System.out.printf("U+%04X%n", code);
String s = "β";
int i = s.codePointAt(0);
System.out.printf("U+%04X", i);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.