代码之家  ›  专栏  ›  技术社区  ›  Traveling Salesman

两个完全相同的阿拉伯文字母“看起来”在NetBeans中并不相等

  •  0
  • Traveling Salesman  · 技术社区  · 7 年前

    我正在使用Netbeans编写java软件。作为调试代码的一部分,我遇到了以下问题。我有一个代码来比较两个看起来完全相同的阿拉伯字母。我已从数据库中复制了这些信件。我本以为代码会发现它们相等,但事实并非如此。下面是我的代码:

        String a = "و";
        String b ="و";
        System.out.println(a.equals(b));
    

    注意:当我用键盘写字母时,我得到了“true”的输出,但当我将其从数据库复制到变量“a”和“b”时。输出为假。为什么?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Edwin Buck    7 年前

    比较Unicode字符并不太难,但比您正在做的事情更复杂。

    您已经复制并粘贴了两个glyph。字形是代码点的图形表示。有时,当代码点不同时,符号相似(或相同)。在这种情况下,您将无法通过 .equals(...) 当它看起来应该通过时进行测试。

    发生这种情况的原因有很多。一个常见的罪魁祸首是你的性格“沉着”。为了支持某些系统,字符实际上可能由一个主码点组成,并由一个额外的码点对其进行修改。(想象一个普通的拉丁字母,其重音被编码为第二个代码点)。Unicode支持这一点,但对于组合为一个字符的相同组合,它也有一个代码点。

    对于其他语言,可能还有其他类似的规则,这些规则对 .等于(…)

        2
  •  0
  •   AGM    7 年前

    尝试获取这两个字符的Unicode值并统一您的字符,您可以使用下一个链接找到要使用的字符 http://jrgraphix.net/r/Unicode/0600-06FF

    06C4和0648具有相同的字符表示