在java中获取char值

Nic*_*ick 14 java character-encoding

如何在Java中获取char的UTF8代码?我有char'a',我想要值97我有char'é',我想要值233

这是一个更多值的表

我试过Character.getNumericValue(a)但是它给了我10而不是97,任何想法为什么?

这似乎非常基本,但任何帮助将不胜感激!

Mic*_*rdt 11

char实际上是一个数字类型,包含unicode值(UTF-16,确切地说 - 你需要两个 char s表示BMP之外的字符).你可以用它做任何事情int.

Character.getNumericValue() 试图将字符解释为数字.


Kai*_*tsu 10

您可以使用java.lang.String的codePointAt(int index)方法.这是一个例子:

"a".codePointAt(0) --> 97
"é".codePointAt(0) --> 233
Run Code Online (Sandbox Code Playgroud)

如果您想避免不必要地创建字符串,以下工作也可以用于char数组:

Character.codePointAt(new char[] {'a'},0)
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 5

那些"UTF-8"代码不是这样的.根据Unicode代码图表,它们实际上只是Unicode值.

因此'é'实际上是U + 00E9 - 在UTF-8中它将由两个字节{0xc3,0xa9}表示.

现在要获取Unicode值 - 或者更准确地说是UTF-16值,就像Java在内部使用的那样 - 您只需要将值转换为整数:

char c = '\u00e9'; // c is now e-acute
int i = c; // i is now 233
Run Code Online (Sandbox Code Playgroud)