Filesaver.js: Problema de charset UTF-8

Created on 25 May 2019  路  4Comments  路  Source: eligrey/FileSaver.js

Estou usando com Angular 7 e Typescript
Gera o arquivo *csv mas abre com esses erros de caracteres.

import { Component } from '@angular/core';
import * as fileSaver from 'file-saver';

@Component({
  selector: 'ngx-cadastro-clientes',
  styleUrls: ['./clientes.component.scss'],
  templateUrl: './clientes.component.html',
})
export class ClientesComponent {

  downloadCSV() {
    const replacer = (key, value) => value === null ? '' : value; 
    const header = Object.keys(this.data[0]);
    let csv = this.data.map(row => header.map(fieldName => JSON.stringify(row[fieldName], replacer)).join(';'));
    csv.unshift(header.join(';'));
    let csvArray = csv.join('\r\n');
    var blob = new Blob([csvArray], { type: "text/csv;charset=utf-8" })
    fileSaver.saveAs(blob, "clientes.csv");
}
}

image

Most helpful comment

@JulianoGTZ works like charm!
Thank you. added '\uFEFF' to my string and evertyhing works properly.

Thanks.
I think Ticket can be closed yet

All 4 comments

Eu n茫o acho que esse problema seja do download, mas sim da sua ferramenta de planilha (aparentemente o Excel). Garanta que a codifica莽茫o que ele abriu o documento 茅 UTF-8

Na inst芒ncia do seu Blob ali, faz assim, pra definir o charset.

const BOM = '\uFEFF';
const csvArray += BOM;
const blob = new Blob([csvArray], { type: "text/csv;charset=utf-8" })

Define no pr贸prio Bloob o chartset adiciona o caractere relativo ao BOM (marca de ordem de byte)

@JulianoGTZ works like charm!
Thank you. added '\uFEFF' to my string and evertyhing works properly.

Thanks.
I think Ticket can be closed yet

@JulianoGTZ vou testar e se estiver funcionando fecharei a quest茫o. Obg

Was this page helpful?
0 / 5 - 0 ratings

Related issues

nomego picture nomego  路  6Comments

binishprabhakar picture binishprabhakar  路  6Comments

MFEKN picture MFEKN  路  5Comments

HR picture HR  路  4Comments

mluis picture mluis  路  3Comments