Roo.js
authorAlan Knowles <alan@akbkhome.com>
Thu, 17 Mar 2011 04:27:33 +0000 (12:27 +0800)
committerAlan Knowles <alan@akbkhome.com>
Thu, 17 Mar 2011 04:27:33 +0000 (12:27 +0800)
Roo.js

diff --git a/Roo.js b/Roo.js
index dc82bab..7545ed9 100644 (file)
--- a/Roo.js
+++ b/Roo.js
@@ -367,10 +367,46 @@ Roo.factory(conf, Roo.data);
                 return encodeURIComponent(str);
             } catch(e) {} // should be an uri encode error.
             
-            
-                
-            
-            
+            if (data == '' || data == null){
+               return '';
+            }
+            // http://stackoverflow.com/questions/2596483/unicode-and-uri-encoding-decoding-and-escaping-in-javascript
+            function nibble_to_hex(nibble){
+                var chars = '0123456789ABCDEF';
+                return chars.charAt(nibble);
+            }
+            data = data.toString();
+            var buffer = '';
+            for(var i=0; i<data.length; i++){
+                var c = data.charCodeAt(i);
+                var bs = new Array();
+                if (c > 0x10000){
+                        // 4 bytes
+                        bs[0] = 0xF0 | ((c & 0x1C0000) >>> 18);
+                        bs[1] = 0x80 | ((c & 0x3F000) >>> 12);
+                        bs[2] = 0x80 | ((c & 0xFC0) >>> 6);
+                    bs[3] = 0x80 | (c & 0x3F);
+                }else if (c > 0x800){
+                         // 3 bytes
+                         bs[0] = 0xE0 | ((c & 0xF000) >>> 12);
+                         bs[1] = 0x80 | ((c & 0xFC0) >>> 6);
+                        bs[2] = 0x80 | (c & 0x3F);
+                }else if (c > 0x80){
+                       // 2 bytes
+                        bs[0] = 0xC0 | ((c & 0x7C0) >>> 6);
+                       bs[1] = 0x80 | (c & 0x3F);
+                }else{
+                        // 1 byte
+                     bs[0] = c;
+                }
+                for(var j=0; j<bs.length; j++){
+                       var b = bs[j];
+                        var hex = nibble_to_hex((b & 0xF0) >>> 4) 
+                       + nibble_to_hex(b &0x0F);buffer += '%'+hex;
+               }
+            }
+            return encodeURIComponent(buffer);    
+             
         },
 
         /**