簡體   English   中英

如何將特殊字符 'β' 轉換為其 unicode

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM