Java Char 到其 unicode 十六进制字符串表示形式,反之亦然
我需要将Java字符的十六进制代码生成为字符串,并在以后再次解析这些字符串。我在这里发现解析可以按如下方式执行:
char c = "\u041f".toCharArray()[0];
我希望有更优雅的东西,比如Integer.valueOf()来解析。
如何正确生成十六进制 Unicode?
我需要将Java字符的十六进制代码生成为字符串,并在以后再次解析这些字符串。我在这里发现解析可以按如下方式执行:
char c = "\u041f".toCharArray()[0];
我希望有更优雅的东西,比如Integer.valueOf()来解析。
如何正确生成十六进制 Unicode?
这将生成 char 的十六进制字符串表示形式:
char ch = 'ö';
String hex = String.format("%04x", (int) ch);
这会将十六进制字符串转换回 char:
int hexToInt = Integer.parseInt(hex, 16);
char intToChar = (char)hexToInt;
在进行了一些更深入的阅读之后,javadoc表示基于参数的Charthing方法不支持所有unicode值,但是那些采用代码点(即)的方法则支持。char
int
因此,我一直在执行以下测试:
int codePointCopyright = Integer.parseInt("00A9", 16);
System.out.println(Integer.toHexString(codePointCopyright));
System.out.println(Character.isValidCodePoint(codePointCopyright));
char[] toChars = Character.toChars(codePointCopyright);
System.out.println(toChars);
System.out.println();
int codePointAsian = Integer.parseInt("20011", 16);
System.out.println(Integer.toHexString(codePointAsian));
System.out.println(Character.isValidCodePoint(codePointAsian));
char[] toCharsAsian = Character.toChars(codePointAsian);
System.out.println(toCharsAsian);
我得到:
因此,我不应该在我的问题中谈论,而应该谈论字符数组,因为Unicode字符可以用多个字符表示。在另一边,一个涵盖了一切。char
char
int