System.Net.WebClient vrací divně kódovaný string   zodpovězená otázka

VB.NET

Tento kód :

Dim webClient As New System.Net.WebClient

Dim URLs As String = "http://www.seznam.cz"

Dim result As String

Try

result = webClient.DownloadString(URLs)

Catch ex As Exception

result = ex.Message

Finally

MessageBox.Show(result)

End Try

Vrací text : ....Seznam - najdu tam, co neznám...

Místo : ....Seznam - najdu tam, co neznám....

Jak to z toho UTF-8 dostanu do ...no právě do "správného" UTF-8....

Předem děkuji

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

Mozna ti pomůže toto :

https://msdn.microsoft.com/cs-cz/library...

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

String je v .NET vždy ve formátu UTF-16 - je do něj převeden při vytváření instance String a .NET s ním tak dál pracuje. To je také důvod, proč v .NET řešíme encoding/decoding jen pokud chceme string od někud přečíst nebo někam zapsat - instance stringů jsou mezi sebou "kompatibilní" vždy. Pokud již jeho instanci máme a ta zobrazuje špatné znaky, nepovedlo se jeho dekódování z původního zdroje, čímž je HTML stránka a následný encoding již nepomůže.

Správná cesta je použít správný encoding při čtení zdroje (HTML stránky), aby se String zdekódoval v pořádku. Viz můj další příšpěvek.

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

Na WebClient instanci nastavte požadovaný encoding. Například:

webClient.Encoding = System.Text.Encoding.UTF8;
nahlásit spamnahlásit spam 0 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