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". 
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
Exclamation [ÇÖZÜLDÜ] Delphi EXE Resource TR Dil Sorunsalı mrmarman 6 191 12-07-2018, Saat: 11:09
Son Yorum: mrmarman
  Lisanslama Sorunu Hk. glagher 11 502 07-07-2018, Saat: 10:40
Son Yorum: engerex
  [ÇÖZÜLDÜ]-Tip Dönüşümü - [TXSDecimal > Float ) hi_selamlar 6 176 02-07-2018, Saat: 12:19
Son Yorum: hi_selamlar
  [ÇÖZÜLDÜ]-n11.com Api Bağlantısı hi_selamlar 3 162 29-06-2018, Saat: 14:46
Son Yorum: hi_selamlar
  [ÇÖZÜLDÜ]-Başka Uygulamadaki MDIChild Form Handle Alma hi_selamlar 9 222 29-06-2018, Saat: 09:52
Son Yorum: hi_selamlar



Konuyu Okuyanlar: 1 Ziyaretçi