Как написать CSV-файл с UTF-16 и спецификацией? - PullRequest
0 голосов
/ 25 сентября 2019

AIM: отправлять CSV-файл из nodejs в angular с помощью спецификации и UTF-16 / UCS-2

У меня был GET API в nodejs, который записывал csv-файл в ответ с использованием спецификации, используя fs.writeFileSync(filePath,'\ufeff'+csv,'UCS-2');.Мой угловой код был

this.http.get(environment.nodeAPIBaseUrl + "/api/downloadCSV", {
            headers: headers,
            responseType: ResponseContentType.Blob,
            search: search //URLSearchParams() for query parameters 
        })
            .subscribe(
                (data) => {

                     var blob = new Blob([data.json()],  { type: 'text/csv' });
                     saveAs(blob, Date.now() + '.csv');
                    this.loading = false;
                },

Приведенный выше код работал правильно, но по некоторым причинам мне пришлось преобразовать API из GET в POST.Мне также пришлось внести небольшие изменения в серверную часть (Nodejs), но строка отправки файла такая же, как в GET API.

После изменения углового кода с GET на POST строка var blob = new Blob([data.json()], { type: 'text/csv' }); начала даватьОшибка JSON, и я понял, что теперь ответ отсутствует в data.json() вместо data.text() Хотя я не угловой разработчик и не уверен, что это значит, но теперь я больше не могу писать файл в формате UCS-2.

Обновлен угловой код:

this.http.post(environment.nodeAPIBaseUrl + "/api/downloadCSV", formData, headers)
            .subscribe(
                (data) => {

                    var blob = new Blob(['\ufeff',data.text()], { type: 'text/csv;' });
                    saveAs(blob, Date.now() + '.csv');
                    this.loading = false;
                },

Хотя мне удалось добавить спецификацию, предварительно добавив «\ ufeff» к данным, но UTF-16 по-прежнему остается проблемой.

Любая идея, что не так с моим кодом.

...