Comando System.IO.File.ReadAllText - Problema con codifica

di il
5 risposte

Comando System.IO.File.ReadAllText - Problema con codifica

Salve,
Sto cercando di impratichirmi con Visual Studio. Mi son messo a seguire passo passo questo tutorial.

http://youtu.be/RqCpOykpQl

Per creare un editor testo simile a notepad. Quindi aprire il contenuto di un file e poi salvarlo.

Nel Form c'è un pulsante chiamato "btnOpen", un'altro chiamato "btnSave" e un riquadro testo chiamato "TextBox1"
____________________________________________________________________

| Imports System
| Imports System.IO
| Imports System.Text
|
| Public Class Form1
| _ Dim ContenutoFile As String
|
| _ Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
| _ _ If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
| _ _ _ ContenutoFile = System.IO.File.ReadAllText(OpenFileDialog1.FileName, System.Text.Encoding.ASCII)
| _ _ _ TextBox1.Text = ContenutoFile
| _ _ End If
| _ End Sub
|
| _ Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
| _ _ If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
| _ _ _ System.IO.File.WriteAllText(SaveFileDialog1.FileName, TextBox1.Text)
| _ _ End If
| _ End Sub
|
| End Class
____________________________________________________________________

Il risultato è fedele a quello prodotto nel tutorial. Apre piccoli file TXT mostrando il contenuto nel TextBox, e poi puoi salvare un file nuovo salvando al suo interno il contenuto del TextBox

Il problema è che funziona solo con file di testo semplici

Se io per esempio voglio editare il contenuto di un file che contiene dei simboli complessi, ascii, ecc.. non funziona

Se per esempio volessi editare questa immagine JPEG

https://www.iprogrammatori.it/images/aziende.jp

Mi dovrebbe mostrare:

ÿØÿà JFIF d d ÿì ... e via discoorendo

E invece nulla

La parte che dice "System.Text.Encoding.ASCII" l'ho aggiunta dopo (infatti non compare nel tutorial) proprio per tentare di risolvere il problema. Effettivamente, dopo che ho aggiunto quello, se io salvo il contenuto del file letto senza farlo passare dalla TextBox

System.IO.File.WriteAllText(SaveFileDialog1.FileName, ContenutoFile)

Lui effettivamente crea un file delle stesse dimensioni del file originale (cosa che non faceva prima) ma comunque non mostra all'interno la stessa simbologia.

Al simbolo ÿ ascii(255) fa corrispondere ? (punto interrogativo)

Qualche consiglio?

5 Risposte

Devi accedere o registrarti per scrivere nel forum
5 risposte