从Java中的String中删除非ASCII字符

时间:2012-05-13 18:45:45

标签: java

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

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

如何删除"�"来自此URI

5 个答案:

答案 0 :(得分:35)

我猜测URL的来源更有问题。也许你正在修复错误的问题?从URI中删除“奇怪”字符可能会给它带来完全不同的含义。

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

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

或者你可以将它扩展到所有非四字节UTF-8字符,如果它不包括“ ”字符:

string fixed = original.replaceAll("[^\\u0000-\\uFFFF]", "");

答案 1 :(得分:15)

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

答案 2 :(得分:4)

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

这是真实的ascii:[^\x00-\x7F]

否则它将修剪出作为ascii table一部分的换行符和其他特殊字符!

答案 3 :(得分:1)

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

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

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

输出:

<UPC>616043287409</UPC>

答案 4 :(得分:1)

使用番石榴CharMatcher

String onlyAscii = CharMatcher.ascii().retainFrom(original)