La scrittura di un file di testo VB.NET (codifica)

Sto scrivendo un’applicazione che deve generare un file di testo con dimensioni fisse colonne.

Il mio codice attuale è:

Dim MyFilePath As String = Path & FILE_PREFIX & FileNr & ".TXT"

IO.File.Delete(MyFilePath)

Dim FileStr As New IO.StreamWriter(MyFilePath, False, <ENCODER HERE>)
Do While r.Read
    FileStr.WriteLine(r("TXTLine"))
Loop
FileStr.Close()
r.Close()

Il mio problema è che ho alcuni caratteri speciali come: “ñ”, “à”, ecc…. e non riesco a trovare la giusta codifica.

  • Se io uso il default, poi sostituisce
    “ñ” con i due personaggi.
  • Se posso utilizzare il codice ASCII quindi tutti speciali
    personaggi finiscono come: “?”
  • Se io uso UTF-8 poi tutto il testo è OK,
    ma aggiunge una “y” nel primo byte di
    il file.

Ho bisogno di caratteri speciali per essere scritto nel file di testo così come sono venuti nel datareader. E non posso avere caratteri extra aggiunto perché le colonne sono di fisso lunghezza…

Che cosa potevo fare?

InformationsquelleAutor Burnsys | 2009-08-21



3 Replies
  1. 2

    Come stai controllando che avete ottenuto il diritto di codifica?

    Se siete semplicemente aprendo il file in Il blocco note, Windows-1252 è probabilmente la codifica desiderata.

    Encoding.GetEncoding("Windows-1252")

    ti danno.

    Nota che ho notato che si dice che alcune colonne sono di lunghezza fissa. Sei scrittura di dati su un file per l’importazione da un altro strumento? Se è così, allora si dovrebbe verificare che cosa la codifica che altro strumento richiede, non quale strumento succede a guardare piuttosto in un qualsiasi altro strumento che si può usare per guardare il file (come il blocco note).

    • Ha Funzionato Perfettamente!
    • Il file verrà letto da un’applicazione di terze parti, per cui non ho accesso. Sto guardando il file con V.exe (un Visualizzatore ESADECIMALE), e ho solo bisogno di essere compatibile con questo: asciitable.com. Che significa che la “Ñ” è uguale a Diminuire: 164 o HEX: F1
    • “Se sei semplicemente aprire il file nel blocco note di Windows-1252 è probabilmente la codifica desiderata”. True se siete negli stati UNITI o in Europa Occidentale, non è necessariamente vero che nel resto del mondo. Naturalmente quelle persone tendono ad essere più informata circa le codifiche, quindi è ragionevole consigli a portata di mano.
  2. 0

    Il problema non è che non riesci a trovare la giusta codifica, il problema è che non so che cosa il vostro codifica della SORGENTE è. Plain ASCII solo ha davvero 256 caratteri e se la sorgente contiene caratteri accentati non sono in ASCII tavolozza, non sarà in grado di scrivere in codifica ASCII. Fine della storia.

    Quello che dovete fare è ri-esaminare la comunicazione tra i due sistemi. Se hai bisogno di avere i caratteri unicode, quindi l’origine e la destinazione sarà necessario accettare unicode in un file di testo o in un documento XML.

    Non si può mettere un piolo quadrato (unicode caratteri accentati) in un buco rotondo (file ASCII).

    • È possibile fintanto che l’area del quadrato è uguale all’area del cerchio moltiplicato per 2/pi. 😉
  3. 0

    Aspetta, vuoi dire che le colonne devono essere di “a lunghezza fissa”. Che suggerisce che si sta cercando di avere questo file letto da un’altra applicazione – sei proprio sicuro di questa seconda applicazione in grado di leggere “speciale” (Unicode) caratteri?

    Sei sicuro che l’altra applicazione non è previsto ASCII solo, e semplicemente ha una specifica codice pagina che gestisce alcuni di questi caratteri speciali utilizzando totalmente diversi numeri (interpreta alto bit di caratteri ASCII in alcune lingue locali)?

    • Io sto leggendo il file con un editor ESADECIMALE.

Lascia un commento