Java 如何转换特殊字符'β';到它的unicode
我想使用代码将'β'转换为其uni代码'U+03B2'。但是当我试图转换它时,我得到了'63'作为它的整数值,即'?'字符的值。 它没有转换为正确的值。是否有任何方法可以获得正确的β值,即十进制'946',十六进制'03B2' 我试过: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
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);