【问题标题】:Find all non unicode characters in file [duplicate]查找文件中的所有非 Unicode 字符 [重复]
【发布时间】:2016-12-19 03:14:56
【问题描述】:

所以我有一个包含非 unicode 字符的文本文件。 例如

"pr�s-*"
ESt Präs

我如何打印它们,但只有它们。我知道这个替换它的java方法

String resultString = currentLine.replaceAll("[^\\x00-\\x7F]", "");

我不想替换它们,我想找到它们并打印出来。

【问题讨论】:

  • 您可以在您的正则表达式中使用Matcher#find。或使用 \P{ASCII} 正则表达式 - 请参阅 ideone.com/jezqeN
  • 您能更好地解释一下非 Unicode 字符是什么意思吗?我认为 Java 中的所有字符都是 Unicode?​​span>
  • @OleV.V.确实。翻转,“非Unicode”是一个很奇怪的构造。尽管有一些“计算机存储的”字符还没有在 Unicode 字符集中,但 Unicode 的整个概念实际上是通用的。在任何情况下,Java 字符串数据类型中的字符都是 Unicode。也许您的意思是也属于其他特定字符集中的字符。在这种情况下,请说明该字符集是什么。或者,您的意思是 Unicode 中的字符和至少一个其他字符集?如果是这样,请列出所有正在考虑的字符集

标签: java string character-encoding


【解决方案1】:

您可以使用Matcher#find 使用[^\\x00-\\x7F] 正则表达式或\\P{ASCII} 来查找和打印所有这些非ASCII 字符:

String s = "pr�s-*";
Pattern pattern = Pattern.compile("\\P{ASCII}");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
    System.out.println(matcher.group(0)); 
} 

Java demo

Java regex reference:

\p{ASCII} = 所有 ASCII:[\x00-\x7F]

\P 表示反向类,所有字符都不是ASCII。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2021-09-08
    • 2013-09-25
    • 2012-04-20
    相关资源
    最近更新 更多