none
Ler caracteres especiais arquivo texto - StreamReader RRS feed

  • Pergunta

  • Estou utilizando a clase StreamReader para ler um arquivo texto, porém ela está pulando os caracteres especiais(ç,ã,é, etc) aí o restante da linha bagunça tudo

    o código é o segte :

    Dim arqtemp As StreamReader = File.OpenText("\Program Files\Prospects\Prospects.txt")

    input = arqtemp.ReadLine()

    ProgressBar1.Maximum = Trim(input)

    input = arqtemp.ReadLine()

    While Not input Is Nothing

    cont = cont + 1

    ProgressBar1.Value = cont

    If input <> "" Then

    Dim myRec As SqlCeUpdatableRecord = RS.CreateRecord

    myRec.SetInt32(0, Mid(input, 1, 6))

    myRec.SetString(1, Mid(input, 42, 54))

    myRec.SetString(2, Mid(input, 96, 30))

    myRec.SetString(3, Mid(input, 126, 25))

    myRec.SetString(4, Mid(input, 151, 8))

    myRec.SetString(5, Mid(input, 7, 35))

    myRec.SetInt16(6, Mid(input, 180, 6))

    myRec.SetString(7, Mid(input, 160, 20))

    myRec.SetString(8, Mid(input, 186, 1))

    RS.Insert(myRec)

    End If

    ProgressBar1.Update()

    input = arqtemp.ReadLine()

    End While

     

    sexta-feira, 30 de janeiro de 2009 14:53

Respostas

  • Olá Edu,

    Você precisa descobrir qual Encoding foi utilizado na criação desse arquivo, para que você possa informar o mesmo Encoding quando for abrir o arquivo para ler o conteúdo.
     
    Ao invés de utilizar o método OpenRead da classe File, utilize diretamente a classe StreamReader, especificando o Encoding no construtor da classe, após o nome do arquivo... Por exemplo:

     
            'Abre o arquivo utilizando o encoding padrão do sistema  
            Dim reader As New StreamReader("\SeuArquivo.txt", Encoding.Default
     
            'Abre o arquivo utilizando o encoding UTF8  
            Dim reader As New StreamReader("\SeuArquivo.txt", Encoding.UTF8) 
     
            'Abre o arquivo utilizando o encoding ASCII  
            Dim reader As New StreamReader("\SeuArquivo.txt", Encoding.ASCII) 
     


    Vale lembrar que a classe Encoding está no namespace System.Text.

    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    segunda-feira, 2 de fevereiro de 2009 16:10