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