java - 如何在java中找到符号的代理对
问题描述
我试图让 and 操作(⋀)符号出现,但符号的 unicode 值为 u+22C1(这可能是错误的,但根据我读过的内容是这样的)。我发现另一个值是 2227,但它会打印 ࢳ。如果你能解释一下找到代理对的方法,因为我必须找到它才能找到更多符号。
解决方案
在 Java 中查找符号的代理对很简单,但有几点需要注意:
- 并非所有字符都由代理对表示,包括您的示例(“⋀”),因此在尝试获取代理对之前始终检查这一点。
- 您需要一种可以在源代码和代码生成的任何输出中显示符号的字体。我在 NetBeans 中使用Monospaced作为代码和输出如下所示。
这是显示任意符号的一些基本 Unicode 信息的代码。它获取符号的代码点,确定它是否由代理对表示,如果是,则获取高代理和低代理。该代码处理两个符号,一个带有代理对(表情符号“”),一个没有(您的“⋀”示例)。
package surrogates;
public class Surrogates {
public static void main(String[] args) {
Surrogates.displaySymbolDetails("️️");
Surrogates.displaySymbolDetails("⋀️️");
}
static void displaySymbolDetails(String symbol) {
int cp = symbol.codePointAt(0);
String name = Character.getName(cp);
System.out.println(symbol + " has code point " + cp + " (hex " + Integer.toHexString(cp) + ").");
System.out.println(symbol + " has Unicode name " + name + ".");
boolean isSupplemenetary = Character.isSupplementaryCodePoint(cp);
if (isSupplemenetary) {
System.out.println(symbol + " is a supplementary character.");
char high = Character.highSurrogate(cp);
char low = Character.lowSurrogate(cp);
System.out.println(symbol + " has high surrogate: " + (int) high + ".");
System.out.println(symbol + " has low surrogate: " + (int) low + ".");
} else {
System.out.println(symbol + " is in the BMP and therefore is not represented by a surrogate pair.");
}
}
}
这是输出:
️️ has code point 128522 (hex 1f60a).
️️ has Unicode name SMILING FACE WITH SMILING EYES.
️️ is a supplementary character.
️️ has high surrogate: 55357.
️️ has low surrogate: 56842.
⋀️️ has code point 8896 (hex 22c0).
⋀️️ has Unicode name N-ARY LOGICAL AND.
⋀️️ is in the BMP and therefore is not represented by a surrogate pair.
笔记:
- “符号”可以表示多种含义,但我假设在您的问题中您只是指一些 Unicode 字符。
- 基本多语言平面 (BMP) 中的符号(即 Unicode 字符)不是由代理对表示的。所有其他符号都在某个补充平面 (SMP) 中,并由代理对表示。
推荐阅读
- mysql - 将 DEFAULT 值设置为 DATE SQL
- php - 在表单中用作 GET 的多个 OPTION 值
- javascript - 从跨度到输入动态(onchange)操作值?
- python - 是否保证迭代相同的frozenset 总是以相同的顺序生成项目?(Python 3)
- maven - docker-maven-plugin:如何从`docker run ... -e 传递环境变量
` 构建或运行步骤? - r - 将我简单的“for循环”转换为应用函数
- c# - 如何移动到下一个 100 副本存储库?
- python - 在 python 中实现 if-then 逻辑时出现 TypeError 问题
- python - 继承(抽象)类时如何处理微小但影响深远的实现差异?
- c - 手动编译并与make链接后“找不到文件或文件夹”