【问题标题】:Vector arrow on top of an letter as char or String字母顶部的矢量箭头作为 char 或 String
【发布时间】:2019-05-19 06:54:06
【问题描述】:

是否有可能将顶部带有矢量箭头的字母添加到字符串(在 Java 中),如下图所示? 用特殊的ASCII码什么的?

【问题讨论】:

  • 明确一点,Java 不使用 ASCII。

标签: java string unicode char ascii


【解决方案1】:

是的,您可以将它们保存为 char 或 String,因为 java 为每个 char 占用 2 个字节并支持 Unicode(UTF-16) char(从 java 9 开始,java 使用紧凑字符串实现,这有助于 java 识别字符类型为 ASCII 或 UNICODE,因此 java 为每个字符占用 1 或 2 个字节)。

此外,您可以将世界上的任何字符存储在 java 字符/字符串中,例如中文、日文等,因为它支持 UTF-16。

【讨论】:

  • 我想你有点误解了我的问题,不过还是谢谢你,现在很好!
  • 压缩字符串存储是用于完全包含C0 Controls and Basic Latin 和 C1 Controls 和 Latin-1 Supplement 块中的字符的字符串;不是“ASCII”。需要注意的是,这是一个内部实现问题。 String API 始终相同:String 是 UTF-16 代码单元的计数序列。
【解决方案2】:

您想使用'COMBINING RIGHT ARROW ABOVE' (U+20D7) 代码点:

System.out.println("a\u20D7");

它应该显示为⃗,但某些字体可能无法正确呈现。

组合字符的概念描述in the wiki

在数字排版中,组合字符是旨在修改其他字符的字符。拉丁文中最常见的组合字符是组合变音符号(包括组合重音符号)。

Unicode 还包含许多预组合字符,因此在许多情况下,可以根据用户或应用程序的选择同时使用组合变音符号和预组合字符。这导致需要在比较两个 Unicode 字符串之前执行 Unicode 规范化,并仔细设计编码转换器,以正确地将 Unicode 中表示字符的所有有效方式映射到传统编码,以避免数据丢失。

在 Unicode 中,欧洲语言和国际音标组合变音符号的主要块是 U+0300–U+036F。组合变音符号也出现在许多其他 Unicode 字符块中。在 Unicode 中,始终在主要字符之后添加变音符号(与一些较旧的组合字符集如 ANSEL 相比),因此可以为同一个字符添加多个变音符号,尽管截至 2010 年,很少有应用程序支持正确呈现此类组合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-20
    • 2015-08-20
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2017-05-23
    • 2010-12-23
    • 1970-01-01
    相关资源
    最近更新 更多