Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 20162|Atsakyti: 2

[Išspręsta] "StreamReader" sprendimas iškraipytiems simboliams skaitant failus

[Kopijuoti nuorodą]
Paskelbta 2018-04-13 16:11:20 | | |
Šiandien, kai aš darau atidaryti failą dialogo OpenFileDialog, man reikėjo perskaityti atidarytą failą ir rodyti jį RichTextBox formoje. Tačiau rodant failą buvo nustatyta, kad rodoma kinų eilutė buvo iškraipyta. Pagrindinės kodo dalys yra šios:
Iš pradžių taip pat maniau, kad kilo problemų dėl simbolių kodavimo, todėl inicijavęs "StreamReader" pridėjau simbolių kodavimo parametrus ir pridėjau kelis kartus, Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, išbandžiau visas kodavimo schemas, kurias buvo galima pridėti, bet rezultatas nebuvo geras.


Iš pradžių operacinė sistema iš "Windows 2000" ir vėliau failų apdorojimui naudojo "Unicode", taigi . Numatytasis .Net failų kodavimas taip pat yra Unicode. Jei nenurodyta kitaip, numatytasis StreamReader kodavimas yra Unicode, o ne dabartinės sistemos ANSI kodų puslapis. Tačiau dauguma dokumentų vis dar saugomi ANSI kodavimu, o kinų tekste naudojamas gb2312, dėl kurio kinų kalba yra iškraipyta, o tai reiškia, kad skaitant tekstą reikia nurodyti kodavimo formatą.


Sprendimas yra toks: System.Text.Encoding.Default nurodo "StreamReader" dabartinės operacinės sistemos kodavimą.






Ankstesnis:.net/c# Xml, Json, Hessian, Protocol Buffers serializacijos palyginimas
Kitą:.net/c# Naudokite Costura.Fody, kad supakuotumėte DLL į EXE
 Savininkas| Paskelbta 2018-04-13 17:11:39 |
Šį pranešimą paskutinį kartą redagavo QWERTYU 2018-4-13 17:18

Jei jis vis tiek neveikia, serveris gali suspausti duomenis, pavyzdžiui, gzip, pirmiausia turite išspausti duomenis.

Paskelbta 2018-04-19 13:31:02 |
Jei žiniatinklio turinys suglaudintas naudojant gzip ir turinys iškraipytas, yra du sprendimai

Pirmasis sprendimas:

//
        Suvestinė:
        Gaukite arba nustatykite naudojamą dekompresijos tipą.
        //
        Grąžinti rezultatus:
        Objektas T:System.Net.DecompressionMethods, nurodantis naudojamo išskleidimo tipą.
        //
        Anomalija:
        T:System.InvalidOperationException:
        Dabartinė objekto būsena neleidžia nustatyti šios ypatybės.
        public DecompressionMethods AutomaticDecompression { get; rinkinys; }
Padaryta ši kodo eilutė, pakeitimai yra labai maži!




Antrasis sprendimas:



Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com