Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 20162|Yanıt: 2

[Çözüldü] Dosya okurken karışık karakterler için StreamReader çözümü

[Bağlantıyı kopyala]
Yayınlandı 13.04.2018 16:11:20 | | |
Bugün, OpenFileDialog adlı bir Açık Dosya diyalogu oluştururken, açık dosyayı okumam ve formdaki RichTextBox'ta görüntülemem gerekiyordu. Ancak dosya görüntülenirken, gösterilen Çince dizisinin bozulduğu tespit edildi. Kodun temel bölümleri şunlardır:
İlk başta karakter kodlamasında bir sorun olduğunu düşündüm, bu yüzden StreamReader'ı başlattığımda karakter kodlama parametrelerini ekledim ve birkaç kez ekledim: Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, eklenebilir tüm kodlama şemalarını denedim ama sonuç iyi olmadı.


Başlangıçta, Windows 2000 ve sonrasında kullanılan işletim sistemi dosya işleme için Unicode kullanıyordu, yani . .Net için varsayılan dosya kodlaması da Unicode'dur. Aksi belirtilmedikçe, StreamReader'ın varsayılan kodlaması Unicode'dur, mevcut sistemin ANSI kod sayfası değil. Ancak, belgelerin çoğu hâlâ ANSI kodlamasında saklanmakta ve Çince metinde gb2312 kullanılır; bu da Çince karakterlerinin karışmasına neden olur; bu da metin okunurken kodlama formatının belirtilmesi gerektiği anlamına gelir.


Çözüm şu şekildedir: System.Text.Encoding.Default, StreamReader'a mevcut işletim sisteminin kodlamasını bildirir.






Önceki:.net/c# Xml, Json, Hessian, Protokol Tamponları serileştirme karşılaştırması
Önümüzdeki:.net/c# DLL'yi EXE'ye paketlemek için Costura.Fody kullanın
 Ev sahibi| Yayınlandı 13.04.2018 17:11:39 |
Bu gönderi en son QWERTYU tarafından 2018-4-13 17:18 tarihinde düzenlenmiştir

Eğer yine de çalışmıyorsa, sunucu veriyi sıkıştırmış olabilir, örneğin gzip'i alalım, önce veriyi dekompres etmeniz gerekir.

Yayınlandı 19.04.2018 13:31:02 |
Web içeriği gzip ile sıkıştırılırsa ve içerik bozulursa, iki çözüm vardır

İlk çözüm:

//
        Özet:
        Kullanılan dekompresyon türünü alın veya ayarlayın.
        //
        Dönüş sonuçları:
        Kullanılan dekompresyon türünü gösteren bir T:System.Net.DecompressionMethods nesnesi.
        //
        Anomali:
        T:System.InvalidOperationException:
        Nesnenin mevcut durumu bu özelliğin ayarlanmasına izin vermez.
        public DecompressionMethods AutomaticDecompression { get; set; }
Aşağıdaki kod satırı tamamlanmıştır, değişiklikler çok küçük!!




İkinci çözüm:



Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com