Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.01.2017, 13:48
Интересующийся
Отправить личное сообщение для DmitryK1 Посмотреть профиль Найти все сообщения от DmitryK1
 
Регистрация: 20.04.2012
Сообщений: 14

Кодировка локально сохраняемого файла
Поделюсь, возможно полезной функцией:
https://eligrey.com/demos/FileSaver.js/
это сохранение файла напрямую из яваскрипта, без обращения на сервер.

Если открыть на этой странице консоль и ввести вот такую команду:
saveAs(new window.Blob(['Иванова№ 123234345'], {type: "text/plain;charset=" + document.characterSet}),"tf.txt")
то сохранится текстовый файлик с названием tf.txt.

И вот вопрос, как можно сохранить этот файл в досявой кодировке CP866?
команда типа
saveAs(new window.Blob(['Иванова№ 123234345'], {type: "text/plain;charset=CP866"}),"tf.txt")
не работает.
Пробовал подставлять ASCII вместо CP866. Не помогает.
В инете перекодировщиков не нашёл. Предлагают сделать массивчик и по нему посимвольно перекодировать, но, надеюсь, штатными средствами получится разрулить.
Ответить с цитированием
  #2 (permalink)  
Старый 31.01.2017, 13:40
Интересующийся
Отправить личное сообщение для DmitryK1 Посмотреть профиль Найти все сообщения от DmitryK1
 
Регистрация: 20.04.2012
Сообщений: 14

В общем сделал так:
var encodeCP866 = function (str) {

    var ep = {
 '& #0;': { 'dec': '0'},
 '& #1;': { 'dec': '1'},
 '& #2;': { 'dec': '2'},
 '& #3;': { 'dec': '3'},
 '& #4;': { 'dec': '4'},
 '& #5;': { 'dec': '5'},
 '& #6;': { 'dec': '6'},
 '& #7;': { 'dec': '7'},
 '& #8;': { 'dec': '8'},
 '% 09': { 'dec': '9'},
'& #10;': { 'dec': '10'},
'& #11;': { 'dec': '11'},
'& #12;': { 'dec': '12'},
'% 0A': { 'dec': '13'},
'& #14;': { 'dec': '14'},
'& #15;': { 'dec': '15'},
'& #16;': { 'dec': '16'},
'& #17;': { 'dec': '17'},
'& #18;': { 'dec': '18'},
'& #19;': { 'dec': '19'},
'& #20;': { 'dec': '20'},
'& #21;': { 'dec': '21'},
'& #22;': { 'dec': '22'},
'& #23;': { 'dec': '23'},
 '& #24;': { 'dec': '24'},
 '& #25;': { 'dec': '25'},
 '& #26;': { 'dec': '26'},
 '& #27;': { 'dec': '27'},
 '& #28;': { 'dec': '28'},
 '& #29;': { 'dec': '29'},
 '& #30;': { 'dec': '30'},
 '& #31;': { 'dec': '31'},
 '& #32;': { 'dec': '32'},
 "% 20": { "dec": "32"},
 "!": { "dec": "33"},
 "% 22": { "dec": "34"},
 "#": { "dec": "35"},
 "$": { "dec": "36"},
 "% 25": { "dec": "37"},
 "&": { "dec": "38"},
 "'": { "dec": "39"},
 "(": { "dec": "40"},
 ")": { "dec": "41"},
 "*": { "dec": "42"},
 "+": { "dec": "43"},
 "{: { hex": "2C"},
 "-": { "dec": "45"},
 ".": { "dec": "46"},
 "/": { "dec": "47"},
 "0": { "dec": "48"},
 "1": { "dec": "49"},
 "2": { "dec": "50"},
 "3": { "dec": "51"},
 "4": { "dec": "52"},
 "5": { "dec": "53"},
 "6": { "dec": "54"},
 "7": { "dec": "55"},
 "8": { "dec": "56"},
 "9": { "dec": "57"},
 ":": { "dec": "58"},
 ";": { "dec": "59"},
 "% 3C": { "dec": "60"},
 "=": { "dec": "61"},
 "% 3E": { "dec": "62"},
 "?": { "dec": "63"},
 "@": { "dec": "64"},
 "A": { "dec": "65"},
 "B": { "dec": "66"},
 "C": { "dec": "67"},
 "D": { "dec": "68"},
 "E": { "dec": "69"},
 "F": { "dec": "70"},
 "G": { "dec": "71"},
 "H": { "dec": "72"},
 "I": { "dec": "73"},
 "J": { "dec": "74"},
 "K": { "dec": "75"},
 "L": { "dec": "76"},
 "M": { "dec": "77"},
 "N": { "dec": "78"},
 "O": { "dec": "79"},
 "P": { "dec": "80"},
 "Q": { "dec": "81"},
 "R": { "dec": "82"},
 "S": { "dec": "83"},
 "T": { "dec": "84"},
 "U": { "dec": "85"},
 "V": { "dec": "86"},
 "W": { "dec": "87"},
 "X": { "dec": "88"},
 "Y": { "dec": "89"},
 "Z": { "dec": "90"},
 "% 5B": { "dec": "91"},
 "% 5C": { "dec": "92"},
 "% 5D": { "dec": "93"},
 "% 5E": { "dec": "94"},
 "_": { "dec": "95"},
 "% 60": { "dec": "96"},
 "a": { "dec": "97"},
 "b": { "dec": "98"},
 "c": { "dec": "99"},
 "d": { "dec": "100"},
 "e": { "dec": "101"},
 "f": { "dec": "102"},
 "g": { "dec": "103"},
 "h": { "dec": "104"},
 "i": { "dec": "105"},
 "j": { "dec": "106"},
 "k": { "dec": "107"},
 "l": { "dec": "108"},
 "m": { "dec": "109"},
 "n": { "dec": "110"},
 "o": { "dec": "111"},
 "p": { "dec": "112"},
 "q": { "dec": "113"},
 "r": { "dec": "114"},
 "s": { "dec": "115"},
 "t": { "dec": "116"},
 "u": { "dec": "117"},
 "v": { "dec": "118"},
 "w": { "dec": "119"},
 "x": { "dec": "120"},
 "y": { "dec": "121"},
 "z": { "dec": "122"},
 "% 7B": { "dec": "123"},
 "% 7C": { "dec": "124"},
 "% 7D": { "dec": "125"},
 "~": { "dec": "126"},
 "% D0% 90": { "dec": "128"},
 "% D0% 91": { "dec": "129"},
 "% D0% 92": { "dec": "130"},
 "% D0% 93": { "dec": "131"},
 "% D0% 94": { "dec": "132"},
 "% D0% 95": { "dec": "133"},
 "% D0% 96": { "dec": "134"},
 "% D0% 97": { "dec": "135"},
 "% D0% 98": { "dec": "136"},
 "% D0% 99": { "dec": "137"},
 "% D0% 9A": { "dec": "138"},
 "% D0% 9B": { "dec": "139"},
 "% D0% 9C": { "dec": "140"},
 "% D0% 9D": { "dec": "141"},
 "% D0% 9E": { "dec": "142"},
 "% D0% 9F": { "dec": "143"},
 "% D0% A0": { "dec": "144"},
 "% D0% A1": { "dec": "145"},
 "% D0% A2": { "dec": "146"},
 "% D0% A3": { "dec": "147"},
 "% D0% A4": { "dec": "148"},
 "% D0% A5": { "dec": "149"},
 "% D0% A6": { "dec": "150"},
 "% D0% A7": { "dec": "151"},
 "% D0% A8": { "dec": "152"},
 "% D0% A9": { "dec": "153"},
 "% D0% AA": { "dec": "154"},
 "% D0% AB": { "dec": "155"},
 "% D0% AC": { "dec": "156"},
 "% D0% AD": { "dec": "157"},
 "% D0% AE": { "dec": "158"},
 "% D0% AF": { "dec": "159"},
 "% D0% B0": { "dec": "160"},
 "% D0% B1": { "dec": "161"},
 "% D0% B2": { "dec": "162"},
 "% D0% B3": { "dec": "163"},
 "% D0% B4": { "dec": "164"},
 "% D0% B5": { "dec": "165"},
 "% D0% B6": { "dec": "166"},
 "% D0% B7": { "dec": "167"},
 "% D0% B8": { "dec": "168"},
 "% D0% B9": { "dec": "169"},
 "% D0% BA": { "dec": "170"},
 "% D0% BB": { "dec": "171"},
 "% D0% BC": { "dec": "172"},
 "% D0% BD": { "dec": "173"},
 "% D0% BE": { "dec": "174"},
 "% D0% BF": { "dec": "175"},
 "% E2% 96% 91": { "dec": "176"},
 "% E2% 96% 92": { "dec": "177"},
 "% E2% 96% 93": { "dec": "178"},
 "% E2% 94% 82": { "dec": "179"},
 "% E2% 94% A4": { "dec": "180"},
 "% E2% 95% A1": { "dec": "181"},
 "% E2% 95% A2": { "dec": "182"},
 "% E2% 95% 96": { "dec": "183"},
 "% E2% 95% 95": { "dec": "184"},
 "% E2% 95% A3": { "dec": "185"},
 "% E2% 95% 91": { "dec": "186"},
 "% E2% 95% 97": { "dec": "187"},
 "% E2% 95% 9D": { "dec": "188"},
 "% E2% 95% 9C": { "dec": "189"},
 "% E2% 95% 9B": { "dec": "190"},
 "% E2% 94% 90": { "dec": "191"},
 "% E2% 94% 94": { "dec": "192"},
 "% E2% 94% B4": { "dec": "193"},
 "% E2% 94% AC": { "dec": "194"},
 "% E2% 94% 9C": { "dec": "195"},
 "% E2% 94% 80": { "dec": "196"},
 "% E2% 94% BC": { "dec": "197"},
 "% E2% 95% 9E": { "dec": "198"},
 "% E2% 95% 9F": { "dec": "199"},
 "% E2% 95% 9A": { "dec": "200"},
 "% E2% 95% 94": { "dec": "201"},
 "% E2% 95% A9": { "dec": "202"},
 "% E2% 95% A6": { "dec": "203"},
 "% E2% 95% A0": { "dec": "204"},
 "% E2% 95% 90": { "dec": "205"},
 "% E2% 95% AC": { "dec": "206"},
 "% E2% 95% A7": { "dec": "207"},
 "% E2% 95% A8": { "dec": "208"},
 "% E2% 95% A4": { "dec": "209"},
 "% E2% 95% A5": { "dec": "210"},
 "% E2% 95% 99": { "dec": "211"},
 "% E2% 95% 98": { "dec": "212"},
 "% E2% 95% 92": { "dec": "213"},
 "% E2% 95% 93": { "dec": "214"},
 "% E2% 95% AB": { "dec": "215"},
 "% E2% 95% AA": { "dec": "216"},
 "% E2% 94% 98": { "dec": "217"},
 "% E2% 94% 8C": { "dec": "218"},
 "% E2% 96% 88": { "dec": "219"},
 "% E2% 96% 84": { "dec": "220"},
 "% E2% 96% 8C": { "dec": "221"},
 "% E2% 96% 90": { "dec": "222"},
 "% E2% 96% 80": { "dec": "223"},
 "% D1% 80": { "dec": "224"},
 "% D1% 81": { "dec": "225"},
 "% D1% 82": { "dec": "226"},
 "% D1% 83": { "dec": "227"},
 "% D1% 84": { "dec": "228"},
 "% D1% 85": { "dec": "229"},
 "% D1% 86": { "dec": "230"},
 "% D1% 87": { "dec": "231"},
 "% D1% 88": { "dec": "232"},
 "% D1% 89": { "dec": "233"},
 "% D1% 8A": { "dec": "234"},
 "% D1% 8B": { "dec": "235"},
 "% D1% 8C": { "dec": "236"},
 "% D1% 8D": { "dec": "237"},
 "% D1% 8E": { "dec": "238"},
 "% D1% 8F": { "dec": "239"},
 "% D0% 81": { "dec": "240"},
 "% D1% 91": { "dec": "241"},
 "% D0% 84": { "dec": "242"},
 "% D1% 94": { "dec": "243"},
 "% D0% 87": { "dec": "244"},
 "% D1% 97": { "dec": "245"},
 "% D0% 8E": { "dec": "246"},
 "% D1% 9E": { "dec": "247"},
 "% C2% B0": { "dec": "248"},
 "% E2% 88% 99": { "dec": "249"},
 "% C2% B7": { "dec": "250"},
 "% E2% 88% 9A": { "dec": "251"},
 "% E2% 84% 96": { "dec": "252"},
 "% C2% A4": { "dec": "253"},
 "% E2% 96% A0": { "dec": "254"},

    };

    var byteArray =[];

    for (var x = 0; x < str.length; x++) {

        var l_key=encodeURI( str.substr(x, 1) ); //encoded key as 
        if (ep[l_key] === undefined) {
            //неизвестный символ
            byteArray.push(63);
            byteArray = byteArray.concat(encodeCP866(l_key));
            byteArray.push(63);
//            debugger;

        } else if (l_key == '%0A') {//обработка CRLF
            byteArray.push(10);
            byteArray.push(13);
        }else {
            byteArray.push(parseInt(ep[l_key].dec));//parseInt(hexdata.substr(x * 2, 2), 16);
        }
    }


    var ret = new Uint8Array(byteArray);

    return ret;


};


( !!! надо убрать пробелы после & и %)

Вызывать так:
saveAs(new Blob([encodeCP866("Привет, Вася!\nС днём рождения")], {type: "application/octet-stream"}),"testCP.p01")


Ну и до конца - на файл c расширением p01 вешается приложение - батничек в котором написано:
copy %1 prn


и - маппинг сетевого принтера на lpt1:
net use lpt1 \\computer1\epson
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
git кодировка файла index FanAizu Оффтопик 0 12.04.2015 20:27
Подгрузка информации через DIV с обработкой файла на стороне сервера Azartno jQuery 1 26.05.2012 15:07
Кодировка внешнего JS файла - проблема в Chrome Freddis Opera, Safari и др. 3 26.07.2011 21:48
кодировка файла при отправке ChikiSt AJAX и COMET 0 08.07.2011 09:46
Кодировка файла css micscr (X)HTML/CSS 5 13.10.2009 22:16