Převod UTF-8 na ANSI při čtení   zodpovězená otázka

VB.NET

Dobrý den. Potřeboval bych poradit, jak přečíst řádky v souboru, který je ve formátu UTF-8. Problémem je diakritika. Tento soubor nemám oprávnění měnit. Můžu jej pouze číst. Potřeboval bych ho při čtení převést do ANSI. Řádky načítám do proměnné ve VS2010. Díky za radu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V čem je problém ve čtení v UTF-8? Toto kódování také diakritiku podporuje a není potíž diakritiku přenášet. Spíše bych tipoval, že někde (databáze či jiný zdroj) provádíte konverzi mezi kódováním

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Problém je v tom, že přečtu řádek, ale místo znaků s diakritikou jsou nesmyslné znaky. Proměnnou používám string. Zkoušel jsem soubor uložit ve formátu ANSI a diakritika se už zobrazovala normálně. Jenže já ten soubor můžu jen číst, na zápis/úpravy nemám práva.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Buď jste ho nenačítal UTF-8 kódováním, nebo není v kódování UTF-8. Jiná možnost není.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Načítám to standartně:

Sub nacti()
        Dim txt As String,p1 as integer, t1 as string

        FileOpen(1, "c:\sklad.txt", OpenMode.Input)

        While Not EOF(1)
            txt = LineInput(1)
            p1 = InStr(txt, " ")
            material(i) = Microsoft.VisualBasic.Left(txt, p1 - 1)
            t1 = Mid(txt, p1)
            t1 = mez(t1)
            drm(i) = Microsoft.VisualBasic.Left(t1, InStr(t1, " ") - 1)
           i = i + 1
        End While
        FileClose(1)
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak tohle rozhodně není standardní, ale 100 let starý způsob z VB6.

Použijte nový přístup z VB.NET:

'Počítá s tím, že soubor bude v kódování UTF-8.
Using textFile = File.OpenText("c:\sklad.txt")
  While Not textFile.EndOfStream
    Dim line = textFile.ReadLine()

  End While
End Using
nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Výborně, už vše funguje jak má. Děkuji moc.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback