2015-03-16 3 views
1

У меня есть этот код для экспорта отфильтрованной таблицы html. У меня есть две проблемы, которые я не могу понять:
1) Я получаю «â € ¢» вместо точки маркера • в экспортированном CSV-файле. Я попытался изменить кодировку с UTF-8 на iso-8859 в мета-голосе и на этот скрипт, но это не помогло.
2) Когда у меня есть цитаты в предложении, он рассматривает это как запятую и нарушает предложение, помещая его в следующую ячейку. Пример:
Я «хорошие» люди с хорошей репутацией
будет разбиты на что-то вроде:

A1 Я «хорошие» людей с
B1 хорошей репутацией

я не могу почему это происходит?
Спасибо!Проблемы с кодировкой при экспорте CSV

<script type='text/javascript'>//<![CDATA[ 

     $(function(){ 

      $('#downloadButton').click(function() { 
     var keepOnlyA1= true      // put this true to remove unused numeric A0 field from each row [ A0, A1=[field,field,...]] 
              // 
      var a= tf_table1.GetFilteredData(true)    // a= [ [A0,A1=[field,field,...]], [A0,A1=[field,field,...]], ...[..,[...]] ] 
              //  ^a[0]      ^a[1]       ^a[n] 
      for (var i=0,row,r1; i<a.length; i++){    // 
       row= a[i]      // row= [A0, A1=[field,field,...]] 
       r1= row[1]      //    ^r1 
       for (var j=0; j<r1.length; j++){   // surround each field with quotes "field" 
        r1[j]= '"'+r1[j].replace('"','""')+'"'  // if there is any " already inside field string, it needs to be doubled. per csv rfc. 
       }       // 
       if (keepOnlyA1) a[i]= r1    // if true, just replace each row array with its single interior A1=[field,field,...] array 
      }        // 
      var colvals = a.join("\r\n") +"\r\n"    // 

       var blob = new Blob([ colvals ], {type: 'text/csv;charset=ISO-8859;'}); 
       //var filename = $('#fileName').val(); 

       if (window.navigator.msSaveOrOpenBlob) { 
        window.navigator.msSaveOrOpenBlob(blob, "S7_Won_Tendes_Export_Filtered.csv"); 
       } 
       else { 
        var a = document.createElement('a'); 
        a.download = filename; 
        a.href = window.URL.createObjectURL(blob); 
         a.style.display= "none"    //added// invisible 
         document.body.appendChild(a)   //added// firefox wouldn't click() it without being appended 
        a.click(); 
        //if (a.remove) a.remove(); 
         a.parentNode.removeChild(a)   //added// 
       } 
      }); 
     });//]]> 

    </script> 

ответ

2

Хорошо мне удалось найти ответы:

Заменить

var blob = new Blob([ colvals ], 

с

var blob = new Blob(["\uFEFF" + buffer], 

и

r1[j]= '"'+r1[j].replace('"','""')+'"' 

с

r1[j]= '"'+r1[j].replace(/"/g, '""')+'"' 
+0

Спасибо за ответ! – simonbor

Смежные вопросы