3

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

4

2 に答える 2