gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz gzz/util/URIUtil.java test/gzz/util/URIUtil...


From: Benja Fallenstein
Subject: [Gzz-commits] gzz gzz/util/URIUtil.java test/gzz/util/URIUtil...
Date: Wed, 01 Jan 2003 12:17:15 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Benja Fallenstein <address@hidden>      03/01/01 12:17:15

Modified files:
        gzz/util       : URIUtil.java 
Added files:
        test/gzz/util  : URIUtil.test 

Log message:
        Unicode<->URI conversion works *took hours* *argh*

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/util/URIUtil.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/test/gzz/util/URIUtil.test?rev=1.1

Patches:
Index: gzz/gzz/util/URIUtil.java
diff -u gzz/gzz/util/URIUtil.java:1.1 gzz/gzz/util/URIUtil.java:1.2
--- gzz/gzz/util/URIUtil.java:1.1       Wed Jan  1 09:55:49 2003
+++ gzz/gzz/util/URIUtil.java   Wed Jan  1 12:17:15 2003
@@ -13,12 +13,22 @@
        byte[] bytes;
        try {
            bytes = s.getBytes("UTF-8");
+           //System.out.println(new String(bytes, "UTF-8"));
        } catch(UnsupportedEncodingException e) {
            throw new Error("JVM does not support UTF-8 encoding (!)");
        }
 
-       for(int i=0; i<s.length(); i++) {
-           byte c = bytes[i];
+       /*
+       for(int i=0; i<bytes.length; i++)
+           System.out.print(bytes[i]+" ");
+       System.out.println();
+       */
+       
+       for(int i=0; i<bytes.length; i++) {
+           char c;
+           if(bytes[i] >= 0) c = (char)bytes[i];
+           else c = (char)(128 + (char)(bytes[i] & 127));
+
            if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||
               (c >= '0' && c <= '9') || c=='(' || c==')' ||
               c=='+' || c==',' || c=='-' || c=='.' || c==':' ||
@@ -27,11 +37,12 @@
                buf.append((char)c);
            else {
                buf.append("%");
-               byte b1 = (byte)(c >>> 4), b2 = (byte)(c & 16);
-               if(b1 < 10) buf.append('0'+b1);
-               else buf.append('a'+b1-10);
-               if(b2 < 10) buf.append('0'+b2);
-               else buf.append('a'+b1-12);
+               char b1 = (char)(c >> 4), b2 = (char)(c % 16);
+               //System.out.println((int)c+" "+(int)b1+" "+(int)b2);
+               if(b1 < 10) buf.append((char)('0'+b1));
+               else buf.append((char)('a'+b1-10));
+               if(b2 < 10) buf.append((char)('0'+b2));
+               else buf.append((char)('a'+b2-10));
            }
        }
        return buf.toString();
@@ -43,19 +54,27 @@
 
        for(int k=0; k<s.length(); k++) {
            char c = s.charAt(k);
-           if(c != '%') 
+           if(c != '%') {
                buf.write((byte)c);
-           else {
+               //System.out.println("w: "+c);
+           } else {
                char d1 = s.charAt(k+1),
-                    d2 = s.charAt(k+1);
+                    d2 = s.charAt(k+2);
                k += 2;
                
-               byte v = (byte)((fromHex(d1) << 4) + fromHex(d2));
-               buf.write(v);
+               int v = (fromHex(d1)*16) + fromHex(d2);
+               //System.out.println("w: "+v);
+               buf.write((byte)v);
            }
        }
        
        byte[] arr = buf.toByteArray();
+
+       /*
+       for(int i=0; i<arr.length; i++)
+           System.out.print(arr[i]+" ");
+       System.out.println();
+       */
        
        try {
            return new String(arr, "UTF-8");
@@ -65,7 +84,7 @@
     }
 
     public static byte fromHex(char hex) {
-       if('0' <= hex && hex <= 9)
+       if('0' <= hex && hex <= '9')
            return (byte)(hex - '0');
            
        if('a' <= hex && hex <= 'h')



reply via email to

[Prev in Thread] Current Thread [Next in Thread]