两个完全相同的阿拉伯字母 "as they appear" 在 NetBeans 中不相等
Two exact same Arabic letters "as they appear" are not equal in NetBeans
我正在使用 Netbeans 编写一个 java 软件。作为调试代码的一部分,我陷入了以下问题。我有一个代码可以比较两个看起来完全相同的阿拉伯字母。我已经从我的数据库中复制了这些信件。我希望代码发现它们相等,但事实并非如此。下面是我的代码:
String a = "و";
String b ="و";
System.out.println(a.equals(b));
注意:当我使用键盘写字母时,我得到 "true" 的输出,但是当我将它从数据库复制到变量 "a" 和 "b" 时。输出是错误的。为什么?
尝试获取两个字符的 Unicode 值并统一您的字符,您可以使用下一个 link 来查找您要使用的字符
http://jrgraphix.net/r/Unicode/0600-06FF
06C4 和 0648 具有相同的字符表示
比较 Unicode 字符并不难,但比您正在做的要复杂得多。
您已经复制并粘贴了两个字形。字形是代码点的图形表示。有时,当代码点不同时,字形相似(或相同)。在这种情况下,您将无法通过 .equals(...)
测试,而它看起来应该已经通过了。
发生这种情况的原因有很多。一个常见的罪魁祸首是您的角色 "composed"。为了支持某些系统,一个字符实际上可能由一个主代码点和一个修改它的附加代码点组成。 (想一想带有重音符号的普通拉丁字母被编码为第二个代码点)。 Unicode 支持这一点,但它也有一个代码点,用于将相同的组合组合为一个字符。
对于其他语言,可能有其他类似的规则,当字形表示看起来相同时,.equals(...)
的代码点比较失败。
我正在使用 Netbeans 编写一个 java 软件。作为调试代码的一部分,我陷入了以下问题。我有一个代码可以比较两个看起来完全相同的阿拉伯字母。我已经从我的数据库中复制了这些信件。我希望代码发现它们相等,但事实并非如此。下面是我的代码:
String a = "و";
String b ="و";
System.out.println(a.equals(b));
注意:当我使用键盘写字母时,我得到 "true" 的输出,但是当我将它从数据库复制到变量 "a" 和 "b" 时。输出是错误的。为什么?
尝试获取两个字符的 Unicode 值并统一您的字符,您可以使用下一个 link 来查找您要使用的字符 http://jrgraphix.net/r/Unicode/0600-06FF
06C4 和 0648 具有相同的字符表示
比较 Unicode 字符并不难,但比您正在做的要复杂得多。
您已经复制并粘贴了两个字形。字形是代码点的图形表示。有时,当代码点不同时,字形相似(或相同)。在这种情况下,您将无法通过 .equals(...)
测试,而它看起来应该已经通过了。
发生这种情况的原因有很多。一个常见的罪魁祸首是您的角色 "composed"。为了支持某些系统,一个字符实际上可能由一个主代码点和一个修改它的附加代码点组成。 (想一想带有重音符号的普通拉丁字母被编码为第二个代码点)。 Unicode 支持这一点,但它也有一个代码点,用于将相同的组合组合为一个字符。
对于其他语言,可能有其他类似的规则,当字形表示看起来相同时,.equals(...)
的代码点比较失败。