19

我有一个包含非 ASCII 字符的 URI,例如:

http://www.abc.de/qq/qq.ww?MIval=typo3_bsl_int_Smtliste&p_smtbez=Schmalbl ttrigeSomerzischeruchtanb

如何从此 URI 中删除“�”

4

5 回答 5

41

我猜 URL 的来源有更多的错误。也许您正在解决错误的问题?从 URI 中删除“奇怪”字符可能会赋予它完全不同的含义。

话虽如此,您可以通过简单的字符串替换来删除所有非 ASCII 字符:

String fixed = original.replaceAll("[^\\x20-\\x7e]", "");

或者,如果不涵盖“�”字符,您可以将其扩展到所有非四字节 UTF-8 字符:

String fixed = original.replaceAll("[^\\u0000-\\uFFFF]", "");
于 2012-05-13T18:49:44.200 回答
20
yourstring=yourstring.replaceAll("[^\\p{ASCII}]", "");
于 2013-12-08T12:34:08.070 回答
7

不不不不不,这不是ASCII ... [^\x20-\x7E]

这是真正的ASCII:[^\x00-\x7F]

否则,它将删除作为 ascii 表一部分的换行符和其他特殊字符!

于 2012-11-19T08:39:50.497 回答
5

要从字符串中删除非 ASCII 字符,下面的代码对我有用。

String str="<UPC>616043287409ÂÂÂÂ</UPC>";

str = str.replaceAll("[^\\p{ASCII}]", "");

输出:

<UPC>616043287409</UPC>
于 2016-08-08T14:09:33.447 回答
4

使用 Guava CharMatcher

String onlyAscii = CharMatcher.ascii().retainFrom(original)
于 2017-11-02T17:32:03.313 回答