Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [VB] scrivere un carattere speciale in file txt

    non trovo prorpio la soluzione a questo problema:

    ho scritto un codice che mi salva in un file di testo delle informazioni. le informazioni sono divise tra loro con un particolare carattere "§"

    il programma gira... e mi crea il file. il file txt lo apro con notapad e tutto è ok. se invece lo apro con worpad dove prima c'era il mio super simbolino ora c'è l'accoppiata "§".

    ho provato a sostituire il simbolo con l'equivalente chr(167), ma poi torno allo stesso problema.

    qualcuno mi sa aiutare??
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quale versione di VB usi?

    Quale codice?

  3. #3
    uso VB 2005 express

    c'è un ciclo che pesca da un DB SQL Server Express 2005 e piazza i dati in una stringa

    Dim strOutput As New System.Text.StringBuilder

    strOutput.Append(Trim(dr.GetString(dr.GetOrdinal(" Codice"))) & "§" & Trim(Dato2) & "§"

    ecc... ci sono circa una decina di campi che piazzo su questa stringa.
    alla fine del record metto un vbcrlf e ricomincia il ciclo per tutti i dati che mi servono

    alla fine quando ho tutti i miei dati in strOutput:

    Dim tw = IO.File.CreateText("C:\dati.txt")
    tw.WriteLine(strOutput.ToString)
    tw.Close()

    la scrittura del file l'ho provata anche in altro modo con:

    Dim obj As IO.StreamWriter
    obj = System.IO.File.CreateText("C:\dati.txt")
    obj.WriteLine(strOutput.ToString)
    obj.Close()

    e non cambia nulla. sbaglio sicuramente qualcosa....

  4. #4
    Originariamente inviato da maurizio127
    uso VB 2005 express

    c'è un ciclo che pesca da un DB SQL Server Express 2005 e piazza i dati in una stringa

    Dim strOutput As New System.Text.StringBuilder

    strOutput.Append(Trim(dr.GetString(dr.GetOrdinal(" Codice"))) & "§" & Trim(Dato2) & "§"

    ecc... ci sono circa una decina di campi che piazzo su questa stringa.
    alla fine del record metto un vbcrlf e ricomincia il ciclo per tutti i dati che mi servono

    alla fine quando ho tutti i miei dati in strOutput:

    Dim tw = IO.File.CreateText("C:\dati.txt")
    tw.WriteLine(strOutput.ToString)
    tw.Close()

    la scrittura del file l'ho provata anche in altro modo con:

    Dim obj As IO.StreamWriter
    obj = System.IO.File.CreateText("C:\dati.txt")
    obj.WriteLine(strOutput.ToString)
    obj.Close()

    e non cambia nulla. sbaglio sicuramente qualcosa....
    Non sbagli nulla, e' un problema di codifica interna !

    Ho provato a scrivere un file di testo contenente SOLO quei due caratteri (§), senza nemmeno un "a capo".
    Aprendolo con Notepad mi appare SOLO §, mentre con WordPad mi appaiono tutti e due !
    Probabilmente Notepad, essendo nato per utilizzare il solo set ASCII stampabile (car. 32-127), elimina i caratteri "strani", o li trasforma in qualcosa di "innocuo".

    Ho provato poi ad aprirlo con Word, e mi dice:
    "Scegliere la codifica da utilizzare per aprire il file: Windows / DOS / Altra codifica"
    Usando altra codifica/Unicode UTF-7 tutto OK, usando UTF-8 mi rimane solo §, come Notepad.

    Consiglio: perche' non usi come separatore un carattere piu' convenzionale, come virgola, o underscore _, o ancora meglio la barretta dritta |, che si trova sotto ESC (con lo shift ) ?
    Ciao !
    IceCube_HT (VB6 fan Club)

  5. #5
    Il problema secondo me è che VB.NET scrive nel file in UTF-8, il Notepad lo riconosce correttamente, mentre WordPad no, e lo interpreta come ANSI (per cui compaiono i simboli indesiderati).
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    penso anch'io ad un problema di codifica.

    resta il problema che non posso cambiare il carattere separatore perchè questo file di testo serve per aggiornare un altro DB, e la ditta che lo gestisce vuole quel separatore. da questo punto di vista ho le mani legate!!

    si riesce alla fine del codice riaprire il file e fargli cancellare quella Â. o se c'è un modo per dire a VB di usare una codifica diversa??

    non so come venirne fuori!!

  7. #7
    nessuno mi aiuta?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se e' una questione di interpretazione dei due programmi (Notepad e Wordpad) non vedo soluzione da suggerirti ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.