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

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

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

如何从此URI中删除“ ”

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

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

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

或者,如果不包含“ ”字符,则可以将其扩展为所有非四字节UTF-8字符:

 string fixed = original.replaceAll("[^\\u0000-\\uFFFF]", ""); 
 yourstring=yourstring.replaceAll("[^\\p{ASCII}]", ""); 

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

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

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

使用番石榴CharMatcher

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

要从String中删除非ASCII字符,下面的代码适合我。

String str =“616043287409”;

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

输出:616043287409