如何将 Unicode 转换为 char

Tin*_*Big 1 java

我想获取与输入 int 对应的 Unicode 字符。您可以假设输入int可以用 Java 表示char

Bas*_*que 6

太长了;博士

\n
Character.toString( 65 )\n
Run Code Online (Sandbox Code Playgroud)\n
\n

A

\n
\n

Character.toString( codePoint )

\n

你说:

\n
\n

我想获取与输入int对应的unicode字符

\n
\n
String character = Character.toString( codePoint ) ;\n
Run Code Online (Sandbox Code Playgroud)\n

请参阅IdeOne.com 上实时运行的这些示例:

\n
System.out.println( Character.toString( 65 ) ) ;               // "A"\n
Run Code Online (Sandbox Code Playgroud)\n
\n

A

\n
\n
String faceWithMedicalMask = Character.toString( 128_567 ) ;  // "" = FACE WITH MEDICAL MASK.\nSystem.out.println( FaceWithMedicalMask ) ;                   \n
Run Code Online (Sandbox Code Playgroud)\n
\n

\n

\n

并非所有代码点都分配给编码字符。检查您的输入整数确实是有效的代码点

\n
int codePoint = 128_567 ;\nString faceWithMedicalMask = null ;\nif( Character.isValidCodePoint( codePoint ) ) {\n    faceWithMedicalMask = Character.toString( codePoint ) ;\n} else {\n    \xe2\x80\xa6 deal with invalid code point\n}\n
Run Code Online (Sandbox Code Playgroud)\n

避免charCharacter类型

\n

你说:

\n
\n

您可以假设输入 int 在 java 中可以表示为 char。

\n
\n

不,你不能这样假设。

\n

Unicode中定义并受 Java 支持的140,000 多个字符中的大多数字符无法用该类型表示char。作为一个16位值,achar在物理上是无能为力的。

\n

自 Java 2 以来,该char类型已被本质上破坏,并被Java 5+ 中添加的代码点支持所取代。

\n

投射intchar

\n

如果您违背我的建议坚持使用char, ,那么您可以将int数字转换为char值。

\n
char c = (char) 66 ; \nSystem.out.println( c ) ;\n
Run Code Online (Sandbox Code Playgroud)\n
\n

\n
\n

注意:这只适用于 0 到 65,535 范围内的代码点。大多数 Unicode 字符的代码点超出该范围,最多为 1,114,111。

\n

0 到 65,535 的范围在 Unicode 中称为基本多语言平面 (BMP)。Java 提供了一种方法来测试这个范围,Character.isBmpCodePoint(int codePoint). 您可以在演员之前检查:

\n
if( Character.isBmpCodePoint( codePoint ) ) {\n    char c = (char) 66 ; \n} else {\n    \xe2\x80\xa6 deal with input out of range\n}\n
Run Code Online (Sandbox Code Playgroud)\n

并非所有代码点都分配给编码字符。检查您的输入整数确实是有效的代码点

\n
if( Character.isBmpCodePoint( codePoint ) ) {\n    if( Character.isValidCodePoint( codePoint ) ) {\n        char c = (char) 66 ; \n    } else {\n        \xe2\x80\xa6 deal with invalid code point\n    }\n} else {\n    \xe2\x80\xa6 deal with input out of range\n}\n
Run Code Online (Sandbox Code Playgroud)\n