xml'de türkçe karakterleri bozuk yazmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dabaddah
Üye
Mesajlar: 167
Kayıt: 13 Mar 2008 04:42
Konum: istanbul

xml'de türkçe karakterleri bozuk yazmak

Mesaj gönderen dabaddah »

Arkadaşlar;

yapmak istediğim şey biraz mantıksız gelebilir. ancak nedenini bilemediğim bir sebepten dolayı türkçe karakterleri bozuk şekilde yazmazsam yapmak istediğim şey olmuyor.
veritabanından çektiğim bazı bilgileri xml dosyasına kaydediyorum.kayıt işlemini bir richtext'e satır satır eklediğim bilgileri xml uzantısı ile kaydederek yapıyorum.

belki bilirsiniz bu hazırladığım dosya UYAP da e-takip olarak kullanılacak. yazdığım programın eski versiyonu türkçe karakterleri bozuk şekilde kaydediyor ve sorunsuz çalışıyor benim yazdığım programda ise türkçe karakterler düzgün çıkıyor ama dosya çalışmıyor. örnek olarak verecek olursam

olması gereken(türkçe karakterler bozuk)

Kod: Tümünü seç

<?xml version="1.0" encoding="UTF-8"?> 
<exchangeData> 
<exchangeHeader versiyon="1.1" /> 
<dosyalar> 
<dosya 
id="dosya_143" 
dosyaTipi="Genel İcra Dairesi" 
dosyaTuru="0" 
takipTuru="0" 
takipYolu="1" 
takipSekli="0" 
alacaklininTalepEttigiHak="nin tahsil tarihine kadar asıl alacağa işleyecek %15 faizi, masraf, vekalet ücreti ile tahsili. Kısmi ödemelerin B.K. 84 uyarınca öncelikle faize ve masraflara mahsuben hesaplanması isteminden ibarettir" 
düzeltilmesi gereken(türkçe karakterler düzgün olan)

Kod: Tümünü seç

<?xml version="1.0" encoding="UTF-8"?> 
<exchangeData> 
<exchangeHeader versiyon="1.1" /> 
<dosyalar> 
<dosya 
id="dosya_773" 
dosyaTipi="Genel İcra Dairesi" 
dosyaTuru="0" 
takipTuru="1" 
takipYolu="1" 
takipSekli="0" 
alacaklininTalepEttigiHak="nin tahsil tarihine kadar asıl alacağa işleyecek %15 faizi, masraf, vekalet ücreti ile tahsili. Kısmi ödemelerin B.K. 84 uyarınca öncelikle faize ve masraflara mahsuben hesaplanması isteminden ibarettir" 
tırnak içindeki bilgiler veritabanından geliyor.

türkçe karakterler bozuk olan bilgilerin geldiği veritabanı sql server ve collation'u Turkish_CI_AS ve bu program delphi 7 de yazılmış
türkçe karakterler düzgün olan bilgilerin gediği veritabanı firebird ve font chars set'i TURKISH_CHARSET ve bu program delphi 2010 da yazılıyor.

kısacası arkadaşlar örnekde gördüğünüz gibi DÜZGÜN OLAN TÜRKÇE KARAKTERLERİ NASIL BOZARIM.

herkese iyi çalışmalar
insanın özü tanımasına engel olan perdeleri;
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: xml'de türkçe karakterleri bozuk yazmak

Mesaj gönderen Battosai »

DÜZGÜN OLAN TÜRKÇE KARAKTERLERİ NASIL BOZARIM.
Böyle bir yöntemle uğraşmayınız başınız ağırır. Zaten kimse şöyle bozacaksın diye tavsiye vermez heralde :) Neyse bekleyin cevaplar gelir.
Kullanıcı avatarı
dabaddah
Üye
Mesajlar: 167
Kayıt: 13 Mar 2008 04:42
Konum: istanbul

Re: xml'de türkçe karakterleri bozuk yazmak

Mesaj gönderen dabaddah »

sevgili battosai kardeşim ilgin ve cevabın için teşekkür ederim

ama yapmam gereken şey gerçekten düzgün olanı bozmak :D zaten baştada demiştim biraz garip gelebilir diye.

neyse bu arada şöyle bir çalışma yaptım ama bu işlem sürecini ciddi şekilde yavaşlatıyor haliyle

bir function yazıp gelen metnin içinden AnsiReplaceStr fonksiyonu ile düzgün harf varsa bulup bozuk olanıyla değiştiriyorum.kod aşağıda
ama tabi bu sadace deneme işlemi yoksa bunun üstünde işlem yapacak olsam süreç ciddi şekilde yavaşlayacak.bunun yerine karakter seti ayarlarıyla ilgili bir çözüm bulmak en mantıklısı.

yanlız sormak istediğim bişey var richtextin karakter setini sisteme göre değilde ingilizceye göre ayarlayabilme şansım varmı. eğer varsa bu işe yarar mı?

herkese iyi çalışmalar;

Kod: Tümünü seç

function Tfrmetakip.karakterboz(str: string): string;
begin
  str:=AnsiReplaceStr(str, 'ö' , 'ö');
  str:=AnsiReplaceStr(str, 'ı' , 'ı');
  str:=AnsiReplaceStr(str, 'ş' , 'ÅŸ');
  str:=AnsiReplaceStr(str, 'ü' , 'ü');
  str:=AnsiReplaceStr(str, 'ğ' , 'ÄŸ');
  str:=AnsiReplaceStr(str, 'ç' , 'ç');
  str:=AnsiReplaceStr(str, 'İ' , 'İ');
  str:=AnsiReplaceStr(str, 'Ö' , 'Ö');
  str:=AnsiReplaceStr(str, 'Ş' , 'Å');
  str:=AnsiReplaceStr(str, 'Ü' , 'Ü');
  str:=AnsiReplaceStr(str, 'Ğ' , 'Ä');
  str:=AnsiReplaceStr(str, 'Ç' , 'Ç');
  result:=str;
end;
insanın özü tanımasına engel olan perdeleri;
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
Kullanıcı avatarı
dabaddah
Üye
Mesajlar: 167
Kayıt: 13 Mar 2008 04:42
Konum: istanbul

Re: xml'de türkçe karakterleri bozuk yazmak

Mesaj gönderen dabaddah »

arkadaşlar;

bileşen olarak unidac kullanıyorum.uniconnection nesnesine veritabanını register ederken win1254 olarak değilde UNICODE_FSS olarak register yaptım.

ve yapmak istediğim şey sorunsuz oldu anacak bu defa haliyle bütün türkçe karakterlerde bozuldu.

olayın veritabanı charseti ile ilgili olduğu belli oldu.

bu durumda fikirleriniz önerileriniz nelerdir?

herkese iyi çalışmalar...
insanın özü tanımasına engel olan perdeleri;
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: xml'de türkçe karakterleri bozuk yazmak

Mesaj gönderen csunguray »

Nasıl yapacağını bilmiyorum ama stringleri ansi formattan unicode formata çevirmen lazım. Bozuk dediğiniz şey ise aslında bozuk değil. Fakat görüntülerken unicode formatta görüntüleme yapmayan/yapamayan bir programda (Örneğin Delphi 7) görüntülediğiniz için bozuk görünüyor.

http://www.soft-gems.net/index.php?opti ... &Itemid=33

linkindeki ücretsiz unicode kütüphanesinden faydalanabilirsiniz.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
dabaddah
Üye
Mesajlar: 167
Kayıt: 13 Mar 2008 04:42
Konum: istanbul

Re: xml'de türkçe karakterleri bozuk yazmak

Mesaj gönderen dabaddah »

sevgili csunguray kardeşim ilgin ve cevabın için çok teşekkür ederim

bende aynı şeyi yazmak üzereydim çünkü hazırladığım xml dosyasını notepad de açıp farklı kaydetten UTF-8 formatında kaydedersem sorunum çözülüyor.

ancak ben bu sorunu delphi system unitinde ki

Kod: Tümünü seç

UTF8Encode
fonksiyonunu kullandığım halde yaşıyordum.

Kod: Tümünü seç

eTakipText.Lines.Text:= UTF8Encode(eTakipText.Lines.Text);
delphi 7 de bu kod işe yaraken delphi 2010 da çalışmıyor.

bununla ilgili forumda şu linkte mege kardeşimizin söylediği bişey var unicode desteği olan bir control kullanmak
viewtopic.php?f=2&t=15670

sorunun büyük bir kısmı çözüldü gibi ancak iki seçenek var unicode desteği olan bir kontrol mü kullanmak gerek yoksa dosyayı hazırlayıp unicode ile encode etmek mi gerek?

herkese iyi çalışmalar
insanın özü tanımasına engel olan perdeleri;
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
Kullanıcı avatarı
dabaddah
Üye
Mesajlar: 167
Kayıt: 13 Mar 2008 04:42
Konum: istanbul

Re: xml'de türkçe karakterleri bozuk yazmak

Mesaj gönderen dabaddah »

arkadaşlar
delphi 7 de çalışan kod neden delphi 2010 da çalışmıyor.

Kod: Tümünü seç

  ShowMessage(UTF8Encode('ğüşiöçĞÜŞİÖÇ'))
;

bu kodu delphi 7 de yazıp çalıştırın birde delphi 2010 da birinde çalışıp diğerinde çalışmadığını göreceksiniz

benim sorunum bu fonksiyonun delphi 2010 da çalışmaması.

çalışmaması derken çalışıpta işe yaramamsı
insanın özü tanımasına engel olan perdeleri;
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: xml'de türkçe karakterleri bozuk yazmak

Mesaj gönderen csunguray »

Delphi 2009'dan sonraki delphi sürümlerinde normal string tipi zaten Unicode tur. Tüm kontroller de unicode uyumludur. Sen tekrar çevrim yapıyorsun gibi.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
dabaddah
Üye
Mesajlar: 167
Kayıt: 13 Mar 2008 04:42
Konum: istanbul

Re: xml'de türkçe karakterleri bozuk yazmak

Mesaj gönderen dabaddah »

sevgili csunguray kardeşim ilgin ve cevabın için çok teşekkür ederim.

2010 da unicode desteği zaten varsa benim bu encode işlemini yapmama gerek kalmadan sorunumun düzelmesi gerek mantık olarak ancak sorunum devam ediyor.çünkü ben oluşturduğum dosyayı notepad ile açıp UTF-8 olarak farklı kaydettiğimde sorunum çözülüyor.yada dosyanın içindeki türkçe karakterleri tek tek bozuk şekilleriyle değiştirdiğimde sorunum yine çözülüyor.

peki bu durumda ne yapmam gerekiyor.
insanın özü tanımasına engel olan perdeleri;
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
Cevapla