1.1 --- a/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/Console.java Fri Mar 01 17:20:56 2013 +0100
1.2 +++ b/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/Console.java Fri Mar 01 17:21:33 2013 +0100
1.3 @@ -19,6 +19,7 @@
1.4
1.5 import java.io.IOException;
1.6 import java.io.InputStream;
1.7 +import java.io.UnsupportedEncodingException;
1.8 import java.lang.reflect.InvocationTargetException;
1.9 import java.lang.reflect.Method;
1.10 import java.lang.reflect.Modifier;
1.11 @@ -131,12 +132,15 @@
1.12 }
1.13 }
1.14
1.15 - private static String encodeURL(String r) {
1.16 + private static String encodeURL(String r) throws UnsupportedEncodingException {
1.17 + final String SPECIAL = "%$&+,/:;=?@";
1.18 StringBuilder sb = new StringBuilder();
1.19 - for (int i = 0; i < r.length(); i++) {
1.20 - int ch = r.charAt(i);
1.21 - if (ch < 32 || ch == '%' || ch == '+') {
1.22 - sb.append("%").append(("0" + Integer.toHexString(ch)).substring(0, 2));
1.23 + byte[] utf8 = r.getBytes("UTF-8");
1.24 + for (int i = 0; i < utf8.length; i++) {
1.25 + int ch = utf8[i] & 0xff;
1.26 + if (ch < 32 || ch > 127 || SPECIAL.indexOf(ch) >= 0) {
1.27 + final String numbers = "0" + Integer.toHexString(ch);
1.28 + sb.append("%").append(numbers.substring(numbers.length() - 2));
1.29 } else {
1.30 if (ch == 32) {
1.31 sb.append("+");