Сохранение файла в кодировке Windows-1251

212
29 июля 2018, 14:00

Использую библиотеку FileSaver.js для сохранения данных в файл. Проблема в том, что данные сохраняются в формате UTF-8, а мне нужно в кодировке Windows-1251:

В итоге, когда я указываю нужную кодировку, в файле получаются "кракозябры":

// Библиотека FileSaver.js 
var saveAs=saveAs||function(e){"use strict";if(typeof e==="undefined"||typeof navigator!=="undefined"&&/MSIE [1-9]\./.test(navigator.userAgent)){return}var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o="download"in r,a=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},i=/constructor/i.test(e.HTMLElement)||e.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},s="application/octet-stream",d=1e3*40,c=function(e){var t=function(){if(typeof e==="string"){n().revokeObjectURL(e)}else{e.remove()}};setTimeout(t,d)},l=function(e,t,n){t=[].concat(t);var r=t.length;while(r--){var o=e["on"+t[r]];if(typeof o==="function"){try{o.call(e,n||e)}catch(a){u(a)}}}},p=function(e){if(/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)){return new Blob([String.fromCharCode(65279),e],{type:e.type})}return e},v=function(t,u,d){if(!d){t=p(t)}var v=this,w=t.type,m=w===s,y,h=function(){l(v,"writestart progress write writeend".split(" "))},S=function(){if((f||m&&i)&&e.FileReader){var r=new FileReader;r.onloadend=function(){var t=f?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");var n=e.open(t,"_blank");if(!n)e.location.href=t;t=undefined;v.readyState=v.DONE;h()};r.readAsDataURL(t);v.readyState=v.INIT;return}if(!y){y=n().createObjectURL(t)}if(m){e.location.href=y}else{var o=e.open(y,"_blank");if(!o){e.location.href=y}}v.readyState=v.DONE;h();c(y)};v.readyState=v.INIT;if(o){y=n().createObjectURL(t);setTimeout(function(){r.href=y;r.download=u;a(r);h();c(y);v.readyState=v.DONE});return}S()},w=v.prototype,m=function(e,t,n){return new v(e,t||e.name||"download",n)};if(typeof navigator!=="undefined"&&navigator.msSaveOrOpenBlob){return function(e,t,n){t=t||e.name||"download";if(!n){e=p(e)}return navigator.msSaveOrOpenBlob(e,t)}}w.abort=function(){};w.readyState=w.INIT=0;w.WRITING=1;w.DONE=2;w.error=w.onwritestart=w.onprogress=w.onwrite=w.onabort=w.onerror=w.onwriteend=null;return m}(typeof self!=="undefined"&&self||typeof window!=="undefined"&&window||this.content);if(typeof module!=="undefined"&&module.exports){module.exports.saveAs=saveAs}else if(typeof define!=="undefined"&&define!==null&&define.amd!==null){define("FileSaver.js",function(){return saveAs})} 
 
 
// Код сохранения файла 
$(document).ready(function(){ 
  $('button').click(function(){ 
    var array = ['id;Фрукт;Цвет\r\n', '1;Банан;Желтый\r\n', '2;Апельсин;Оранжевый\r\n', '3;Яблоко;Красный\r\n']; 
    saveAs(new Blob(array, {type: 'text/csv;charset=windows-1251'}), 'file.csv'); 
  }); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<button>Скачать файл</button>

Answer 1

Я так понимаю, что Вы записываете CSV. Чтобы Excel открыл CSV в UTF-8, есть два варианта:

  1. Пишите в начало файла BOM - "\xEF\xBB\xBF"
  2. Сохраняйте файл с расширением "txt". Тогда при открытии его в Excel появится диалог выбора кодировки, символа-разделителя и пр.
READ ALSO
В Firefox у service worker navigator отсутствуют permissions

В Firefox у service worker navigator отсутствуют permissions

Мне нужно что бы в service worker вызывались NotificationsСоответственно мне нужно проверить пермишены

171
XLSX в JSON chrome ошибка в консоли

XLSX в JSON chrome ошибка в консоли

Выскакивает ошибка в консоли Chrome "Failed to load

158
не срабатывает запрос

не срабатывает запрос

прошу вашей помощи, в mysql совсем новичокесть две таблицы student с полями id_st, id_gr1, name и group с полями id_gr, name_gr

157
MySQL Installer не устанавливает MySQL Server (did not find packages in the current bundle error)

MySQL Installer не устанавливает MySQL Server (did not find packages in the current bundle error)

Скачал с сайта MySQL инсталлер последней версии, а он предлагает к установке только коннекторы и документацию (режим установки Custom)В режиме...

707