Problema importazione carattere "°" in Visual Basic 2022

di il
10 risposte

Problema importazione carattere "°" in Visual Basic 2022

Buongiorno,

nella versione 2003 di Visual Studio se importavo da un file di testo il carattere in oggetto non avevo problemi.

Ora ho cominciato ad usare la versione 2022 del community di Visual Studio, ed ad esempio, se importo per leggere in una msgbox del testo contenete il carattere “°”, questo carattere viene convertito in un simbolo che sembra un rombo con dentro un punto di domanda.

Visto che ho fatto una installazione minimal, chiedo se mi mancano dei moduli da installare, o forse è un problema noto? 

allego testo codice di prova

       FileOpen(1, FileName, OpenMode.Input) 'apro il file in lettura
       Do While Not EOF(1)           'leggi il file fino alla fine
           MyStringInput = LineInput(1)
           MsgBox(MyStringInput)

       Loop

10 Risposte

  • Re: Problema importazione carattere "°" in Visual Basic 2022

    Quel codice mi sa di vb6 o addirittura QBasic.

    Con vbnet usa uno StreamReader indicando anche l'Encoding usato.

    Se vuoi, manda un link del file di testo che stai leggendo per fare una prova

  • Re: Problema importazione carattere "°" in Visual Basic 2022

    Grazie per la risposta. Effettivamente è il codice del 2003, l'ho importato nel 2022 per fare delle modifiche necessarie per far funzionare l'app su Win11. Il testo da leggere è tipo questo:

    %FATTORI%
    {}
    int.0conrit(Giallo)

    %FINESTRA%
    GRANDEZZA_0

    %BOUNDARY DA RICALCOLARE%

    %ORIGINI SCALATE%

    %BOUNDARY%
    sag10(imp+o+m)(Giallo)
    bava_est_25°(Giallo)
    bava_int_25°(Giallo)
    bava_punt_tac(Giallo)

    %PATTERN%

    scritta_dx(Giallo)

    %MODELLI%
    superf_stampo_19057(Giallo)
    superf_stampo_19057.dmt(Giallo)

    ----FINE----

  • Re: Problema importazione carattere "°" in Visual Basic 2022

    Come ti ha già detto Oregon è un problema di “Encoding”, cioè bisogna capire se il file che stai leggendo è un UTF8, ANSI, o altre cose.

    Prova con:

            Dim testo = IO.File.ReadAllLines("c:\blablabla\miofile.txt", System.Text.Encoding.Default)
            For Each linea In testo
                MsgBox(linea)
            Next
  • Re: Problema importazione carattere "°" in Visual Basic 2022

    Non avevo capito bene…

    Ho provato il codice SirJo e ho lo stesso problema, allego il file testo nel link  (se ho capito come fare)

    C:\Users\fontolang\Desktop\confpwmill

  • Re: Problema importazione carattere "°" in Visual Basic 2022

    No, non hai allegato il file

    Prova anche con

    Dim testo = IO.File.ReadAllLines("c:\blablabla\miofile.txt", System.Text.Encoding.UTF8)
  • Re: Problema importazione carattere "°" in Visual Basic 2022

    Carica il file su un sito di sharing e posta il link

  • Re: Problema importazione carattere "°" in Visual Basic 2022

    Ho capito che è un problema di encoding, se provo a tirarlo su con Default o UTF8 dà problemi, se provo con UTF7  o Latin funziona.

    Di solito scrivo in ANSI (così mi segnala Notepad++) oppure altri file Winmerge mi segnala sono scritti in Windows-1252; voi con cosa importereste il file scritto in ANSI o Windows-1252 ?

  • Re: Problema importazione carattere "°" in Visual Basic 2022

    Scusa non capisco la domanda.

    Non è come faremmo noi ma come serve a te per quel file.

  • Re: Problema importazione carattere "°" in Visual Basic 2022

    Ho risolto, in pratica era un problema di codifica, ho risolto mettendo la specifica della codifica sia in scrittura che in lettura dei file di testo. Il formato UFT8 mi dà problemi di compatibilità con alcune applicazioni, perciò l'ho forzato ad ANSI o Latin1. 

    Imports System.IO
    
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            ' Leggi il contenuto dal file
            Dim testo = IO.File.ReadAllLines("I:\uff_tecnico\archiviogiov\Sorgenti_VB\Font_VBasic\File_testo\Importa_testo\confpwmill", System.Text.Encoding.Latin1)
    
            ' Creare una stringa contenente tutte le righe lette
            Dim tutteLeRighe As String = String.Join(Environment.NewLine, testo)
    
            ' Visualizza tutte le righe in una finestra di dialogo personalizzata
            MessageBox.Show(tutteLeRighe, "Righe lette", MessageBoxButtons.OK, MessageBoxIcon.Information)
    
            ' Scrivi il contenuto nella nuova posizione
            Try
                Dim percorsoNuovoFile As String = "I:\uff_tecnico\archiviogiov\Sorgenti_VB\Font_VBasic\File_testo\Importa_testo\confpwmill_new"
                ' Specifica la codifica di scrittura (ad esempio, UTF-8 o Unicode).
                Dim codifica As System.Text.Encoding = System.Text.Encoding.Latin1
    
                File.WriteAllText(percorsoNuovoFile, tutteLeRighe, codifica)
                MessageBox.Show("Contenuto salvato con successo nel file 'confpwmill_new'.", "Salvataggio completato", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Catch ex As Exception
                MessageBox.Show("Errore durante il salvataggio del contenuto: " & ex.Message, "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub
    End Class
    

    PS Si mette “risolto” in questo forum a una cosa risolta?

  • Re: Problema importazione carattere "°" in Visual Basic 2022

    No niente risolto

Devi accedere o registrarti per scrivere nel forum
10 risposte