Regex java中未通过正则表达式过滤的非ascii字符

Regex java中未通过正则表达式过滤的非ascii字符,regex,non-ascii-characters,Regex,Non Ascii Characters,我正在使用regex[^\x00-\x7F]过滤Java应用程序中的任何非ascii字符。它正在过滤大多数字符,但最近发现了一个问题,即它让名为“保护区的开始”的控制字符(参见链接())通过并显示为–;在我的xml文件中。尽管此字符是非ascii字符,即超出(0-127)范围,但有人能解释一下为什么不过滤它,以及是否有其他字符可能不会像这样过滤。注意,我正在使用xstream解析器解析文本。任何建议都将不胜感激。谢谢 只需使用s=s.replaceAll(“\\p{ASCII}+”,”)

我正在使用regex[^\x00-\x7F]过滤Java应用程序中的任何非ascii字符。它正在过滤大多数字符,但最近发现了一个问题,即它让名为“保护区的开始”的控制字符(参见链接())通过并显示为–;在我的xml文件中。尽管此字符是非ascii字符,即超出(0-127)范围,但有人能解释一下为什么不过滤它,以及是否有其他字符可能不会像这样过滤。注意,我正在使用xstream解析器解析文本。任何建议都将不胜感激。谢谢

只需使用
s=s.replaceAll(“\\p{ASCII}+”,”)
删除所有非ASCII符号。如果出现诸如某些Unicode符号损坏之类的问题,则不是正则表达式问题,请检查编码。您能给出一个答案吗?我们正在使用xstream解析器,该解析器正在将实际的“保护字符开头”转换为其十六进制值–;并附加到我的XML。我尝试了Wiktor的解决方案,但字符仍然并没有被删除。我仍然不明白为什么正则表达式[^\x00-\x7F]在过滤所有其他非ascii字符时不过滤这个字符。有人知道xstream解析器的默认编码是什么吗。