Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
XML'de Türkçe karakter sorunu [Çözüldü]
#1
Merhaba; excelden verileri alıp daha sonra xml olarak kaydediyorum, fakat xml kayıt baktığımda türkçe karakter sorunu var bu sorunu nasıl çözerim


const
  RowSon = $0000000B;
var
  Xml: TStringlist;
  SSay, J: Integer;
  Excel, Sheet, Book: Variant;
begin
  With OpenDialog do
    try
      Filter := 'Excel *.xls,*.xlsx|*.xls;*.xlsx';
      Options := Options + [ofAllowMultiSelect];
      if Execute then
      begin
        Xml := TStringlist.Create;
        Screen.Cursor := crHourGlass;
        Excel := CreateOleObject('Excel.Application');
        Book := Excel.Workbooks.Open(FileName);
        Sheet := Book.WorkSheets[1]; // Sayfa 1 den çek
        SSay := Excel.ActiveSheet.Cells.SpecialCells(RowSon, EmptyParam).Row;
        for J := 1 to SSay do
        begin
          Xml.Add('<adres>');
          Xml.Add('<il>' + Trim(Sheet.Cells[J, 1]) + '</il>');
          Xml.Add('<ilce>' + Trim(Sheet.Cells[J, 2]) + '</ilce>');
          Xml.Add('<semt>' + Trim(Sheet.Cells[J, 3]) + '</semt>');
          Xml.Add('<mahalle>' + Trim(Sheet.Cells[J, 4]) + '</mahalle>');
          Xml.Add('<posta>' + Trim(Sheet.Cells[J, 5]) + '</posta>');
          Xml.Add('</adres>');
        end;
      end;
    finally
      Xml.SaveToFile(C:\Users\serhat\Desktop\' + 'il_ilce.xml');
      Screen.Cursor := crDefault;
      Excel.Workbooks.Close;
      Excel.Quit;
      Excel := Unassigned;
      Sheet := Unassigned;
    end;
end;

Cevapla
#2
excelden okuduklarınızı form üzerindeki bir memoya yazdırdınız mı?
türkçe karakter sorunun kaynağını anlamak için
excel'den okunurken mi, yoksa xml olarak kaydedince mi oluyor
Cevapla
#3
Merhaba, Charset belirlememişsin,

Kod:
XML.Encoding  := 'utf-8';

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#4
(25-07-2017, Saat: 00:43)serhat Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba; excelden verileri alıp daha sonra xml olarak kaydediyorum, fakat xml kayıt baktığımda türkçe karakter sorunu var bu sorunu nasıl çözerim


const
  RowSon = $0000000B;
var
  Xml: TStringlist;
  SSay, J: Integer;
  Excel, Sheet, Book: Variant;
begin
  With OpenDialog do
    try
      Filter := 'Excel *.xls,*.xlsx|*.xls;*.xlsx';
      Options := Options + [ofAllowMultiSelect];
      if Execute then
      begin
        Xml := TStringlist.Create;
        Screen.Cursor := crHourGlass;
        Excel := CreateOleObject('Excel.Application');
        Book := Excel.Workbooks.Open(FileName);
        Sheet := Book.WorkSheets[1]; // Sayfa 1 den çek
        SSay := Excel.ActiveSheet.Cells.SpecialCells(RowSon, EmptyParam).Row;
        for J := 1 to SSay do
        begin
          Xml.Add('<adres>');
          Xml.Add('<il>' + Trim(Sheet.Cells[J, 1]) + '</il>');
          Xml.Add('<ilce>' + Trim(Sheet.Cells[J, 2]) + '</ilce>');
          Xml.Add('<semt>' + Trim(Sheet.Cells[J, 3]) + '</semt>');
          Xml.Add('<mahalle>' + Trim(Sheet.Cells[J, 4]) + '</mahalle>');
          Xml.Add('<posta>' + Trim(Sheet.Cells[J, 5]) + '</posta>');
          Xml.Add('</adres>');
        end;
      end;
    finally
      Xml.SaveToFile(C:\Users\serhat\Desktop\' + 'il_ilce.xml');
      Screen.Cursor := crDefault;
      Excel.Workbooks.Close;
      Excel.Quit;
      Excel := Unassigned;
      Sheet := Unassigned;
    end;
end;


Merhaba,

Şu eklemeleri projendeki veya excel dosyandaki kodlamaya göre ayarlarsan sorun çözülecektir.

    ...
    finally
      Xml.WriteBom := FALSE; // bu satır BOM özelliği olmadan dosyaya yazılmasını sağlar, eğer BOM olsun istiyorsan TRUE yapmalısın, UTF8 kullandığımda bunu TRUE yapıyorum
      Xml.SaveToFile(C:\Users\serhat\Desktop\' + 'il_ilce.xml'       ,      TEncoding.UT8    );   // UTF8 olarak kodlayarak veriyi dosyaya yazar

BOM ve Kodlama konusunda aşağıdaki sayfaları gözden geçirmelisin;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Diğer Encoding türleri için;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Can Yücel: "Toprak gibi olmalısın! Ezildikçe sertleşmelisin! Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı."
Cevapla
#5
(25-07-2017, Saat: 00:43)serhat Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba; excelden verileri alıp daha sonra xml olarak kaydediyorum, fakat xml kayıt baktığımda türkçe karakter sorunu var bu sorunu nasıl çözerim


const
  RowSon = $0000000B;
var
  Xml: TStringlist;
  SSay, J: Integer;
  Excel, Sheet, Book: Variant;
begin
  With OpenDialog do
    try
      Filter := 'Excel *.xls,*.xlsx|*.xls;*.xlsx';
      Options := Options + [ofAllowMultiSelect];
      if Execute then
      begin
        Xml := TStringlist.Create;
        Screen.Cursor := crHourGlass;
        Excel := CreateOleObject('Excel.Application');
        Book := Excel.Workbooks.Open(FileName);
        Sheet := Book.WorkSheets[1]; // Sayfa 1 den çek
        SSay := Excel.ActiveSheet.Cells.SpecialCells(RowSon, EmptyParam).Row;
        for J := 1 to SSay do
        begin
          Xml.Add('<adres>');
          Xml.Add('<il>' + Trim(Sheet.Cells[J, 1]) + '</il>');
          Xml.Add('<ilce>' + Trim(Sheet.Cells[J, 2]) + '</ilce>');
          Xml.Add('<semt>' + Trim(Sheet.Cells[J, 3]) + '</semt>');
          Xml.Add('<mahalle>' + Trim(Sheet.Cells[J, 4]) + '</mahalle>');
          Xml.Add('<posta>' + Trim(Sheet.Cells[J, 5]) + '</posta>');
          Xml.Add('</adres>');
        end;
      end;
    finally
      Xml.SaveToFile(C:\Users\serhat\Desktop\' + 'il_ilce.xml');
      Screen.Cursor := crDefault;
      Excel.Workbooks.Close;
      Excel.Quit;
      Excel := Unassigned;
      Sheet := Unassigned;
    end;
end;


Xml.SaveToFile(C:\Users\serhat\Desktop\' + 'il_ilce.xml', TEncoding.GetEncoding(1254));
sorununuzu çözeceğini düşünüyorum
O. Mert
WWW
Cevapla
#6
Emeği geçen herkese teşekkür ederim.

'il_ilce.xml',TEncoding.Unicode);
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi 10.2 Aes sorunu seci20 2 63 17-10-2018, Saat: 12:41
Son Yorum: seci20
  [Çözüldü] Otomatik artan alan değerlerini sıfırlama Lord_Ares 4 109 17-10-2018, Saat: 08:54
Son Yorum: esistem
  [ÇÖZÜLDÜ] Query ismini değişken olarak göndermek Lord_Ares 14 290 12-10-2018, Saat: 12:33
Son Yorum: Lord_Ares
  salt okunur fonksiyon sorunu codder71 3 180 09-10-2018, Saat: 16:38
Son Yorum: codder71
  ADOConnection Conneted 'da Sql Stop Sorunu emrahgs 8 180 09-10-2018, Saat: 14:38
Son Yorum: emrahgs



Konuyu Okuyanlar: 1 Ziyaretçi