Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 20162|Odpověď: 2

[Vyřešeno] Řešení StreamReaderu pro zkreslené znaky při čtení souborů

[Kopírovat odkaz]
Zveřejněno 13.04.2018 16:11:20 | | |
Dnes, když jsem vytvářel dialog Open File OpenFileDialog, potřeboval jsem přečíst otevřený soubor a zobrazit ho ve formuláři RichTextBox. Při zobrazení souboru se však zjistilo, že zobrazený čínský řetězec je zkreslený. Klíčové části kódu jsou následující:
Nejdřív jsem si také myslel, že je problém s kódováním znaků, takže když jsem inicializoval StreamReader, přidal jsem do něj parametry kódování znaků a přidal je několikrát, Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, zkoušel jsem všechna kódovací schémata, která šla přidat, ale výsledek nebyl dobrý.


Původně operační systém od Windows 2000 a později používal Unicode pro zpracování souborů, takže . Výchozí kódování souborů pro .Net je také Unicode. Pokud není uvedeno jinak, výchozí kódování StreamReaderu je Unicode, nikoli současná ANSI kódová stránka systému. Většina dokumentů je však stále uložena v ANSI kódování a čínský text používá gb2312, což způsobuje zmatené čínské znaky, což znamená, že při čtení textu musí být specifikován formát kódování.


Řešením je: System.Text.Encoding.Default sděluje StreamReaderu kódování aktuálního operačního systému.






Předchozí:.net/c# Xml, Json, Hessian, porovnání serializace protokolových bufferů
Další:.net/c# Použijte Costura.Fody k zabalení DLL do EXE
 Pronajímatel| Zveřejněno 13.04.2018 17:11:39 |
Tento příspěvek byl naposledy upraven QWERTYU dne 13. 4. 2018 v 17:18

Pokud to stále nefunguje, server mohl data komprimovat, například gzip, musíte data nejdřív dekomprimovat.

Zveřejněno 19.04.2018 13:31:02 |
Pokud je webový obsah komprimován pomocí gzip a obsah je zkreslený, existují dvě možnosti

První řešení:

//
        Shrnutí:
        Zjistěte nebo nastavte typ dekomprese, který se používá.
        //
        Výsledky návratu:
        Objekt T:System.Net.DecompressionMethods, který indikuje typ použité dekomprese.
        //
        Anomálie:
        T:System.InvalidOperationException:
        Aktuální stav objektu tuto vlastnost nedovoluje.
        public DecompressionMethods AutomaticDecompression { get; set; }
Následující řádek kódu je hotový, změny jsou velmi malé!!




Druhé řešení:



Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com