TEXT 50
Utf8_encode.txt Guest on 19th August 2020 07:51:02 PM
  1. //
  2. // a replacement for escape() which encodes the data using UTF8
  3. //
  4. // (C)2004 Cal Henderson <[email protected]>
  5. //
  6.  
  7. function escape_utf8(data) {
  8.  
  9.         if (data == '' || data == null){
  10.                 return '';
  11.         }
  12.  
  13.         var buffer = '';
  14.         for(var i=0; i<data.length; i++){
  15.                 var c = data.charCodeAt(i);
  16.                 var bs = new Array();
  17.  
  18.                 if (c > 0x10000){
  19.                         // 4 bytes
  20.                         bs[0] = 0xF0 | ((c & 0x1C0000) >>> 18);
  21.                         bs[1] = 0x80 | ((c & 0x3F000) >>> 12);
  22.                         bs[2] = 0x80 | ((c & 0xFC0) >>> 6);
  23.                         bs[3] = 0x80 | (c & 0x3F);
  24.  
  25.                 }else if (c > 0x800){
  26.                         // 3 bytes
  27.                         bs[0] = 0xE0 | ((c & 0xF000) >>> 12);
  28.                         bs[1] = 0x80 | ((c & 0xFC0) >>> 6);
  29.                         bs[2] = 0x80 | (c & 0x3F);
  30.  
  31.                 }else if (c > 0x80){
  32.                         // 2 bytes
  33.                         bs[0] = 0xC0 | ((c & 0x7C0) >>> 6);
  34.                         bs[1] = 0x80 | (c & 0x3F);
  35.  
  36.                 }else{
  37.                         // 1 byte
  38.                         bs[0] = c;
  39.                 }
  40.  
  41.                 for(var j=0; j<bs.length; j++){
  42.                         var b = bs[j];
  43.                         var hex = nibble_to_hex((b & 0xF0) >>> 4) + nibble_to_hex(b & 0x0F);
  44.                         buffer += '%'+hex;
  45.                 }
  46.         }
  47.  
  48.         return buffer;
  49. }
  50.  
  51. function nibble_to_hex(nibble){
  52.         var chars = '0123456789ABCDEF';
  53.         return chars.charAt(nibble);
  54. }

Paste is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.