MÉTODO FILE.READALLLINES (ENCONDING)
Vamos lá,
Estou lendo um arquivo txt conforme método abaixo, acontece que se possuir acentuação em algum caractere, este é mostrado deformado, conforme já conhecemos.
Código:
Como resolver essa situação, visto que já uso UFT-8 ?
Estou lendo um arquivo txt conforme método abaixo, acontece que se possuir acentuação em algum caractere, este é mostrado deformado, conforme já conhecemos.
Código:
Private Sub analisadados()
Try
[ô] ler todas as colunas do grid uma uma
For i As Integer = 0 To DataGridView1.Rows.Count - 1
[ô] Passar por todas as linhas do ficheiro
For Each linha As String In File.ReadAllLines(caminho, Encoding.UTF8)
[ô] Caso o conteúdo da linha contenha a celula 1
If linha.Contains(DataGridView1.Rows.Item(i).Cells(1).Value) Then
[ô] Procura a posição do caractere separador (espaço)
Dim posSeparador = linha.IndexOf([Ô] [Ô])
[ô] Lê o conteúdo antes do caractere separador com o nome do ficheiro
Dim nomeFicheiro As String = linha.Substring(0, posSeparador)
[ô] Lê o conteúdo depois do caractere separador como hash do ficheiro
Dim hashFicheiro As String = linha.Substring(posSeparador)
ListBox1.Items.Add(nomeFicheiro & hashFicheiro)
End If
Next
Next i
Catch ex As Exception
MessageBox.Show([Ô]Erro [Ô] & ex.Message.ToString)
End Try
End Sub
Como resolver essa situação, visto que já uso UFT-8 ?
Codificação não é necessariamente relacionada à acentuação, mas sim o que foi usado para criar o arquivo. Existe um jeito de verificar a codificação correta do arquivo, ou você pode tentar todas as possÃveis... O método abaixo, faz exatamente isso:
Você passa simplesmente o caminho do arquivo e o método retorna a codificação dele.
public static Encoding GetEncoding(string filename)
{
var bom = new byte[4];
using (var file = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
file.Read(bom, 0, 4);
}
if (bom[0] == 0x2b && bom[1] == 0x2f && bom[2] == 0x76) return Encoding.UTF7;
if (bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf) return Encoding.UTF8;
if (bom[0] == 0xff && bom[1] == 0xfe) return Encoding.Unicode; //UTF-16LE
if (bom[0] == 0xfe && bom[1] == 0xff) return Encoding.BigEndianUnicode; //UTF-16BE
if (bom[0] == 0 && bom[1] == 0 && bom[2] == 0xfe && bom[3] == 0xff) return Encoding.UTF32;
return Encoding.ASCII;
}
Você passa simplesmente o caminho do arquivo e o método retorna a codificação dele.
Tente com :
For Each linha As String In File.ReadAllLines(caminho, Encoding.GetEncoding(28591))
Obrigado KERPLUNK, agradeço pelo conhecimento transmitido, será de grande valor.
Vou pontuar o JABA por ter apresentado a solução para o momento, grande abraço!!
Vou pontuar o JABA por ter apresentado a solução para o momento, grande abraço!!
Tópico encerrado , respostas não são mais permitidas