Iso-8859-1 utf-8 decoder encoder

koc94ok

Ищу функции кодера и декодера из одной кодировки в другую и наоборот, заранее спасибо.ИЗ iso-8859-1 В utf-8 ИЗ utf-8 В iso-8859-1
2 ответа

koc94ok

Notepad++Кодировки -> Кодировки -> Западно-Европейская -> iso-8859-1 Обратно там же.


koc94ok

Notepad++Кодировки -> Кодировки -> Западно-Европейская -> iso-8859-1 Обратно там же.
Я тему не зря создал в этом разделе, мне нужна функция перевода на яве... И они вроде как нашлись:
function encode_utf8(rohtext) {
  // dient der Normalisierung des Zeilenumbruchs
  rohtext = rohtext.replace(/\r\n/g,"\n");
  var utftext = "";
  for(var n=0; n<rohtext.length; n++)
    {
      // ermitteln des Unicodes des  aktuellen Zeichens
      var c=rohtext.charCodeAt(n);
      // alle Zeichen von 0-127 => 1byte
      if (c<128)
        utftext += String.fromCharCode(c);
      // alle Zeichen von 127 bis 2047 => 2byte
      else if((c>127) && (c<2048)) {
        utftext += String.fromCharCode((c>>6)|192);
        utftext += String.fromCharCode((c&63)|128);}
      // alle Zeichen von 2048 bis 66536 => 3byte
      else {
        utftext += String.fromCharCode((c>>12)|224);
        utftext += String.fromCharCode(((c>>6)&63)|128);
        utftext += String.fromCharCode((c&63)|128);}
    }
  return utftext;
}
 
function decode_utf8(utftext) {
             var plaintext = ""; var i=0; var c=c1=c2=0;
            // while-Schleife, weil einige Zeichen ************* werden
             while(i<utftext.length)
                 {
                 c = utftext.charCodeAt(i);
                 if (c<128) {
                     plaintext += String.fromCharCode(c);
                     i++;}
                else if((c>191) && (c<224)) {
                     c2 = utftext.charCodeAt(i+1);
                     plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
                    i+=2;}
                else {
                    c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
                    plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
                     i+=3;}
                 }
             return plaintext;
         }
Однако, на некоторых строках функции барахлят, а именно прилично большие исходные коды страниц, и ф-ция возвращает строку оборванную в каком-либо месте(почти всегда в одном и том же). Вопрос к гуру, что это может быть?