Ответ 1

Я предполагаю, что источник URL-адреса больше виноват. Возможно, вы исправляете неправильную проблему? Удаление "странных" символов из URI может дать ему совершенно другое значение.

С учетом сказанного вы можете удалить все символы, отличные от ASCII, с простой заменой строки:

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

Или вы можете распространить это на все символы не четырехбайтовых символов UTF-8, если это не распространяется на символ "":

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

Ответ 2

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

Ответ 3

Нет, нет, нет, нет, это не ASCII... [^\x20-\x7E]

Это реальный ascii: [^\x00-\x7F]

В противном случае он обрезает символы новой строки и другие специальные символы, которые являются частью таблицы ascii!

Ответ 4

Использовать Guava CharMatcher

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

Ответ 5

Чтобы удалить символы Non-ASCII из строки, ниже код работал у меня.

Строка str = "616043287409ÂÂÂÂ";

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

Выход: 616043287409