Я хотел бы проверить длинный список строк URL, но некоторые из них содержат символы умлаута, например: ä, à, è, ö и т. д.
Есть ли способ настроить Apache Commons UrlValidator для приема этих символов?
Этот тест не пройден (обратите внимание на ã):
@Test
public void urlValidatorShouldPassWithUmlaut()
{
// Given
org.apache.commons.validator.routines.UrlValidator validator;
validator = new UrlValidator( new String[] { "http", "https" }, UrlValidator.ALLOW_ALL_SCHEMES );
// When
String url = "http://dbpedia.org/resource/São_Paulo";
// Then
assertThat( validator.isValid( url ), is( true ) );
}
Этот тест пройден (ã заменено на a):
@Test
public void urlValidatorShouldPassWithUmlaut()
{
// Given
org.apache.commons.validator.routines.UrlValidator validator;
validator = new UrlValidator( new String[] { "http", "https" }, UrlValidator.ALLOW_ALL_SCHEMES );
// When
String url = "http://dbpedia.org/resource/Sao_Paulo";
// Then
assertThat( validator.isValid( url ), is( true ) );
}
Версия программного обеспечения:
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.4.0</version>
</dependency>
Обновление:
validator.isValid( IDN.toASCII(url) )
также терпит неудачу, поскольку IDN.toASCII(url)
делает вещи, которые я еще не понимаю, например. он преобразует http://dbpedia.org/resource/São_Paulo
в http://dbpedia.xn--org/resource/so_paulo-w1b
, что по-прежнему недействительно в соответствии с UrlValidator
IDN.toASCII(url)
? - person GGrec   schedule 10.08.2013