【问题标题】:How can i compare two words which contain unicode characters?如何比较两个包含 unicode 字符的单词?
【发布时间】:2018-04-19 13:30:52
【问题描述】:

我正在尝试创建一个处理单词的语言模型,但我遇到了问题,因为我的语料库是外语,因此具有 ġ、ħ 和 ż 等 unicode 字符,但 .equals 不适用于这些单词即使我正在从文本文件中读取文本并准确地复制这些单词,也会出现字母。我该怎么做才能解决这个问题?

public class test3 {
  public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    String line;
    System.out.print("Enter string: ");
    line = s.nextLine();
    if(line.equals("aħħar")){
        System.out.println("Correct"); 
    } else {
        System.out.println("Incorrect");
    }
  }
}

I have entered the word 'aħħar' and keep getting "Incorrect".

【问题讨论】:

  • 请在您需要帮助的地方添加实际代码。尽快更新您的问题:)
  • Equals 适用于包含 Unicode 字符的字符串。你阅读它们的方式有问题。例如。您使用的是正确的字符集吗?是否有您没有注意到的不可打印字符(因为它们不可打印)?
  • @searlea 鉴于 OP 所写的内容,您不能说您提供的参考资料是重复的。看看安迪写了什么。
  • 你能发布一个不起作用的代码示例吗?见stackoverflow.com/help/mcve
  • @laune 当然,你是对的。我没有认为这可能是字符集编码问题 - 我看到重音符号并认为这是最有可能的答案(我想这就是为什么 stackoverflow 默认在重复注释中插入“可能”)

标签: java unicode


【解决方案1】:

最可能的原因是读取的默认编码 来自标准输入(通过扫描仪)与您的操作系统使用的不匹配。

请注意,Scanner 的构造函数有一个附加参数String charsetName,用于将文件中的字节转换为要扫描的字符的编码类型。添加可能因操作系统和安装而异的适当值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多