Čeština   zodpovězená otázka

VB.NET, Algoritmy

Nedaří se mi převést čestinu W1250 na UTF8:

Dim Kodovani As System.Text.Encoding = system.Text.Encoding.GetEncoding(1250)
Dim PrevodPole(20) As Byte
Dim Popis As String
...


Popis = Kodovani.GetString(PrevodPole)

PrevodPole obsahuje znaky s češtinou Win (1250). Vše funguje ale místo "š" se píše znak "e".

Třída System Text je poněkud moc obsáhlá. Není to někde lépe udělané v jiné třídě? Třeba jako:

Vysledek = Convert.String1250.ToUTF8(PrevadenyRetezec)

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

Chyba je ve vstupním souboru.

Ale druhá část otázky zůstává. Není nějaký jednodušší způsob převodu kodovací tabulky? Nejde nastavit přímo u proměnné string kodovací tabulka?

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

Ne, to už z principu není možné. String reprezentuje řetězec, který je v paměti uložen v jednom konkrétním kódování (2 bajty = 1 znak).

Pokud jej chcete v kódováním jiném, musíte jej převést na pole bajtů, string podporuje jen to jedno kódování a žádné jiné.

Třídy v System.Text nikterak složité nejsou, jen se v tom zorientovat.

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

Jen se v tom zorientovat...

No na třídu Convert jsem ani nečetl návod a hned jsem si převedl čísla jak jsem potřeboval.Zato System.Text už studuji dva dny a pořád se v tom neorentuji. Tohle se Microsoftu moc nepovedlo.

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

Naopak třídy pro práci s textem a kódováním jsou velice povedené. V 99% případů vznikají problémy proto, že je zdrojový text ve špatném kódování a logicky se ty znaky potom špatně zobrazují. Vše je přehledně popsáno včetně seznamu podporovaných kódování a příkladů zde:

http://msdn.microsoft.com/en-us/library/...

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