Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET - Tekstitiedoston merkistö

Hoover [24.07.2007 15:42:22]

#

Mitenkä tekstitiedoston merkistön oikein voisi tarkistaa? Tarkoitus olisi tehdä sellainen pieni ikkuna, johon ladataan tekstitiedostosta tekstiä ja teksti voidaan sitten myös tallennetaa samalla merkistöllä, jossa se oli ennen tiedoston avaamista.

Yritin tehdä tätä StreamReaderillä ja StreamWriterilla, mutta en ole keksinyt keinoa, kuinka voisin varmistaa, että olen saanut tallennettua tekstit oikealla merkistöllä.

Esim.

Dim r As StreamReader
Dim w As StreamWriter

r = New StreamReader(file, System.Text.Encoding.Default)
w = New StreamWriter(file, False, System.Text.Encoding.Default)

Oletuksena ilmeisesti StreamReaderi ja StreamWriter käyttävät aina UTF-8:aa, mutta kuinka voisin käyttää juuri niitä merkistöjä, joissa tiedostot olivat ennestään?

Lisäys

Olisiko tämä luotettava vaihtoehto samassa merkistössä tallentamiseen, jossa teksti on luettu:

Dim r As StreamReader
Dim w As StreamWriter

r = New StreamReader(file, True)
w = New StreamWriter(file, False, r.CurrentEncoding)

neau33 [26.07.2007 05:11:52]

#

Moikka Hoover!

Yes, juuri sen tuo tekee (siis toimii jos "file" <> "file") eli luku ja kirjoitus samassa muodossa...Tuo ei kuitenkaan vielä selvitä sitä, missä muodossa filu oli viimeksi tallennettu...

'testaa koodia esim. luomalla muistiolla työpöydälle tiedosto - testi.txt - ja tallentamalla sitä muistiolla ANSI/Unicode/Unicode big endian/UTF-8 muodoissa...

Dim polku As String = Microsoft.VisualBasic.Environ("userprofile") + "\Työpöytä\testi.txt"
  Dim r As New StreamReader(polku)
  Dim rivi As String = r.ReadLine()
  Dim koodaus As Encoding = r.CurrentEncoding
    r.Close()
    r = Nothing

  Dim w As New StreamWriter(polku, True, koodaus)
    w.BaseStream.Seek(0, SeekOrigin.End)
    w.WriteLine(Environment.NewLine() + encode.EncodingName)
    w.Close
    w = Nothing

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta