Şimdi Ara

ANSI file ı UTF-8 e çevirmek

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
4.374
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • C# ile Bir csv dosyasını okuyorum.Dosyayı kullanıcı ANSI olarak kaydetmiş.Aşağıdaki kodlar normal bir şekilde okuyor sorun yok taki ° derece işareti ile karşılaşana kadar.Bu işareti dosyayı notepad ile açıp ANSI den UTF-8 e çevirip kaydedince elle bu karakteri okuyabiliyorum.Ancak kodlama ANSI olduğunda bu karakter kareye dönüşüyor.

    Ben bu işi okumaya başlamadan önce yapsın istiyorum ki kodlaması ne olursa olsun okuyabilsin.

    public override DataSet Read()
    {
    DataSet ds = new DataSet();

    FileInfo fi = new FileInfo(FilePath);

    // BURAYA ANSI file olarak kaydedilmiş dosyayı UTF-8 yapacak kod lazım.

    TextReader reader = new StreamReader(FilePath);

    String line;
    String[] lines;

    ds.Tables.Add("csv");

    line = reader.ReadLine();
    lines = line.Split(';');
    ds = CreateColumns(ds, lines);


    while ((line = reader.ReadLine()) != null)
    {
    lines = line.Split(Delimitter);
    AddRow(ref ds, lines);

    }

    return ds;
    }







  • StreamReader otomatik olarak UTF-8 olarak okuyor. Burda sorun okumada değil, veritabanında olabilir. Eğer veritabanında tek bytelık karakter dizisi olarak kaydediyorsan UTF-8 karakterleri iki karakterlik yer alacaktır, ve bunlardan en az biri kare şeklinde gözükecektir. Çünkü bulunamayan karakterler kare olarak gösterilir. Bunu UTF-8 şeklinde ekrana yazdırırsan düzgün okunacaktır, yani dosyadan okurken bir kayıp yoktur.

    Problemin ya veritabanındadır ya da veritabanından okuma yöntemindedir.
  • quote:

    Orijinalden alıntı: =burhan=

    StreamReader otomatik olarak UTF-8 olarak okuyor. Burda sorun okumada değil, veritabanında olabilir. Eğer veritabanında tek bytelık karakter dizisi olarak kaydediyorsan UTF-8 karakterleri iki karakterlik yer alacaktır, ve bunlardan en az biri kare şeklinde gözükecektir. Çünkü bulunamayan karakterler kare olarak gösterilir. Bunu UTF-8 şeklinde ekrana yazdırırsan düzgün okunacaktır, yani dosyadan okurken bir kayıp yoktur.

    Problemin ya veritabanındadır ya da veritabanından okuma yöntemindedir.


    StreamReader defult UTF-8 okur yalnız StreamReader(Stream, Encoding) gibi bir "overloaded method"u da mevcuttur. Yani
    TextReader reader = new StreamReader(FilePath); kısmını
    TextReader reader = new StreamReader(FilePath, System.Text.Encoding.ASCII);
    yaparsanız okuma sorununuz çözülür. "overloaded method"un türkçesini unuttum ama konuyu incelerseniz çözebilirsiniz.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.