[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[jetty-users] java.lang.IllegalArgumentException: !utf8 when decode a request containing Thai character
|
Hi,
when I try to post any data containing Thai character, Jetty7 will
throw an exception:
java.lang.IllegalArgumentException: !utf8 at
org.eclipse.jetty.util.Utf8StringBuilder.append(Utf8StringBuilder.java:112) at
org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:450) at
org.eclipse.jetty.util.UrlEncoded.decodeTo(UrlEncoded.java:497) at
org.eclipse.jetty.server.Request.extractParameters(Request.java:261)
It seems Utf8StringBuffer.append() will always throw
java.lang.IllegalArgumentException: !utf8 when try to decode any
unicode character between 2048 to 4095.
To reproduce it, run this code:
public static void main(String[] args) throws Exception {
UrlEncoded encoded = new UrlEncoded();
UrlEncoded encoded2 = new UrlEncoded();
// 2047, 2048, 2049, 4094, 4095, 4096
String[] characters = {"\u07FF", "\u0800", "\u0801", "\u0FFE",
"\u0FFF", "\u1000"};
String expectEncoded;
for (String character : characters) {
encoded.clear();
encoded2.clear();
encoded.add("var", character);
expectEncoded = encoded.encode();
try {
encoded2.decode(expectEncoded);
System.out.println("PASSED " + (int) character.charAt(0));
} catch (Exception e) {
System.out.println("FAILED " + (int) character.charAt(0) + ",
" + e.getMessage());
}
}
}
Am I missing something? Or is it a Jetty7 bug?
Thanks in advance,
W.A.