Xuelei, This looks fine.
I would add a comment to line 408-409 that says something like: Non LDH refers to characters in the ASCII range, but which are not letters, digits or the hypen. That explains what exactly was fixed here. Michael On 29/08/13 13:46, Xuelei Fan wrote:
Hi, Please review the fix of JDK-8023881. webrev: http://cr.openjdk.java.net/~xuelei/8023881/webrev.00/ This bug has not been ported to bugs.sun.com. The following is the descirption of the issue. -------------------------------------------------------- IDN.toASCII("示例.com", IDN.USE_STD3_ASCII_RULES) throws: Exception ... java.lang.IllegalArgumentException: Contains non-LDH characters at java.net.IDN.toASCIIInternal(IDN.java:275) at java.net.IDN.toASCII(IDN.java:118) However, the "idn" tool is able to handle above IDN properly: $ idn --usestd3asciirules www.示例.com www.xn--fsq092h.com Per step 3, section 4.1, RFC 3490: 3. If the UseSTD3ASCIIRules flag is set, then perform these checks: (a) Verify the absence of non-LDH ASCII code points; that is, the absence of 0..2C, 2E..2F, 3A..40, 5B..60, and 7B..7F. (b) Verify the absence of leading and trailing hyphen-minus; that is, the absence of U+002D at the beginning and end of the sequence. However, in the impl of IDN is checking far more strictly than above. Unicode point bigger than 0x007A is not acceptable. It is too strict to convert Unicode with IDN.toASCII() if IDN.USE_STD3_ASCII_RULES option is set. -------------------------------------------------------- Thanks, Xuelei