Java 如何转换特殊字符'β';到它的unicode

Java 如何转换特殊字符'β';到它的unicode,java,utf-8,hex,decimal,Java,Utf 8,Hex,Decimal,我想使用代码将'β'转换为其uni代码'U+03B2'。但是当我试图转换它时,我得到了'63'作为它的整数值,即'?'字符的值。 它没有转换为正确的值。是否有任何方法可以获得正确的β值,即十进制'946',十六进制'03B2' 我试过: int code = 'β'; byte[] b = { (byte)code }; String s = new String(b, "UTF-8"); 以下是各种形式的价值: int code = 'β'; System.out.prin

我想使用代码将'β'转换为其uni代码'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 UTF-8
选项(或另一种支持
β
的字符编码)

您的代码是错误的,因为您使用了一个16位的
char
,并将其切成两半,只保留较低的8位。缩小强制类型转换可以破坏数据;它们需要被明确地写出来,让你思考你在做什么

您的代码如下所示:

int code = 0x000003B2;
byte[] b = { 0xB2 };
字节序列0xB2不是有效的UTF-8,因此使用替换字符进行解码,
s
中的code>(U+FFFD)。如果您的输出设备未配置为显示该字符,则将在输出时使用不同的替换字符进行交换,

如果在编辑器和编译器中获得正确的编码,则应该可以:

int code = 'β';
System.out.printf("U+%04X%n", code);

我得到63 3f 003f 003f?我无法解释这一点。我刚刚粘贴了我使用的代码,并对其进行了测试。Unicode 003F是一个问号。可能由于某种原因,测试版字符未被识别,并被视为
“?”
String s = "β";
int i = s.codePointAt(0);
System.out.printf("U+%04X", i);