Inquiridor
Leitura de Arquivo .CSV (Problema na hora de ler arquivos acentuados) C#

Pergunta
-
Pessoal, bom dia/tarde
Eu tenho um código que insere em um .CSV uma coluna chamada "UNB", os valores do "UNB" são o nomes que estão renomeados no Arquivo e isso acontece em 80+ CSVs.. O meu problema é que basicamente ao rodar o programa, algumas colunas com acentos, tais como : "Não", "Código" - ficam assim -> Cód | Não
- Me parece que não está interpretando os acentos.
Na chamade File.OpenReadAllLines / já tentei colocar todos Encoding possíveis e mesmo assim não funciona.. Se puderem ajudar, vou agradecer bastante.
Vou deixar em anexo o código, abraços!
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Insere_UNB_em_CSV { class UnbCsv { private string caminhoDiretorio = @"D:\CSVs"; public void ListaArquivosDiretorio() { DirectoryInfo d = new DirectoryInfo(caminhoDiretorio); FileInfo[] Files = d.GetFiles("*.csv"); foreach (FileInfo file in Files) { InsereColuna(file.Name); Console.WriteLine(file.Name); } } private void InsereColuna(string file) { string caminho = caminhoDiretorio.Substring(caminhoDiretorio.Length) == @"\\" ? caminhoDiretorio : caminhoDiretorio + @"\\"; if (!Directory.Exists(caminho + @"\\Transformados")) { Directory.CreateDirectory(file + @"\\Transformados"); } string[] CSVDump = File.ReadAllLines(caminho + file, Encoding.GetEncoding("iso-8859-1")); List<List<string>> CSVList = CSVDump.Select(x => x.Split(';').ToList()).ToList(); string f = ""; var possuiColunaUnb = CSVList[0].Any(x => x.ToLower() == "unb"); Console.WriteLine(file); if (!possuiColunaUnb) { for (int i = 0; i < CSVList.Count; i++) { f = file.Substring(3, 3); CSVList[i].Insert(CSVList[i].Count - 1, i == 0 ? "Unb" : f); } File.WriteAllLines(caminho + @"Transformados\\" + file, CSVList.Select(x => string.Join(";", x))); } } } }
Rafael Marvila IT Profissional
Todas as Respostas
-
Rafael,
Faça o seguinte:
1- Abra o WordPad no seu computador e copie os comandos do script.bat e cole no WordPad. Quando fizer isso:
2- Vá em salvar como(salve as type) e em tipo selecione "Documento de Texto - Formato MS-DOS(Text Document - MS-DOS Format). Salve o arquivo. O arquivo ficará no formato txt.
3- Depois vá onde salvou o arquivo, abra-o com o bloco de notas. Clique em arquivo com o bloco de notas aberto e em salvar como, salve-o com a extensão .cmd
Pronto! Execute o .cmd e seja feliz.
Observação: Caso essa resposta seja útil, clique em propor como resposta.
Site Pessoal (Artigos, Dicas, WebCast voltado a área Microsoft) : https://diegogouveia.com.br/ -
Olá,
altere esta linha:
string[] CSVDump = File.ReadAllLines(caminho + file, Encoding.GetEncoding("iso-8859-1"));
para
string[] CSVDump = File.ReadAllLines(caminho + file, Encoding.GetEncoding("utf-8"));
veja se funciona.
Abs.
Leandro de Agostini MCTS - Web Application, Framework 4
- Sugerido como Resposta Leandro de Agostini terça-feira, 6 de setembro de 2016 14:10