Unicode Çeviri

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Unicode Çeviri

Mesaj gönderen t-hex »

Merhaba,
Lehçe metin bilgisinin olduğu bir HTML dosyasının içinde bulunan bu dile ait bazı cümleleri ayıklamam lazım, o işlemi yaptım ama HTML dosyasına yazılan değerlerle gösterilen değerler farklı, örneğin lehçe olan

Kod: Tümünü seç

Jak się nazywasz?
dosya içerisinde

Kod: Tümünü seç

Jak si& #281; nazywasz?
olarak kodlanmış. ( & ile # arasını ayırmak zorunda kaldım, yoksa hemen sayıları göstermiyor karşılık gelen harfi gösteriyordu :) ) Benim okuttuğum bu değeri unicode bileşenlerde olması gerektiği gösterebilmem için nasıl bir işlemden geçirmem lazım?

iyi çalışmalar
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- Belki de biliyorsundur ama &#281 gibi kodların Delphi'deki gösterimi

Kod: Tümünü seç

Chr(281)
gibidir.

- Yani Pos ile bulduğun &# ikilisini takp eden rakamı Chr() içine alıp aynı pozisyona replace ettiğinde orjinal karakteri görürsün. Veya bu işlemi bir WebBrowser'a yıkmak için, HTML text'i Web Browser'e yapıştırıp, oradan metin halini kopyala/yapıştır yaptırabilirsin..

// Edit // Eklenti //

- Unutmuşum.. Bazı kodlar içinde 4 rakamlı özel HTML taglar'da kullanılıyor... Bunları etüd edip karşılığını senin bildirmen gerekiyor...

- Ben DivXTurk projesinde bunu şu şekilde aştım... (Ref:www.sinema.com adresinden veri çekerken karşılaştığım bir problemdi)iKarakter değişkeni, integer tipinde &# yanında çektiğim harf kodu...

Kod: Tümünü seç

    Case iKarakter of
    256..32767 : // özel
        begin
          case iKarakter of // Özel Tag... varsa ASCII standarta dönüş.
            8217: Kod := 39; // Tek Tırnak
            8220: Kod := 34; // Tırnak Aç
            8221: Kod := 34; // Tırnak Kapat
          end; // Case
        end;
     else
        begin
            Kod := iKarakter;
        end;
     end; // Case
Resim
Resim ....Resim
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

@mrmcop cevabın için teşekkür ederim ama chr(281) gibi bir kullanımda olması gereken karekter döndürülmüyor, ayrıca bunu WiderChar olarak atasam bile o karakteri alamıyorum. HTML'den ayıkladığım satırlardaki karakterleri replace etme yöntemini en son çare olarak kullanacağım ama onu yapmadan önce bu işin daha pratik bir yolu varsa onu öğrenmek istedim. Tabi öncelikli sorunum bu özel karekterleri delphi code'undan atayamıyorum.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Tekrar merhaba..

- Zaten ASCII code standardına göre 0..255 = 256 tane karakter kodlanmıştır.

- Ek olarak bildirdiğim noktaya göre 281'i etüd edip neye karşılık geldiğini bulmak lazım... Çünkü normal karakter setinde maksimum 256 tane karakter var.

- Daha kolay birşey mi bilmiyorum ama Torry.Net adresinden freeware bir tane HTML Parser bileşeni aramayı deneyebilirsin..
Resim
Resim ....Resim
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

Soruyu şöyle değiştirsem :

Delphiden kod ile

Kod: Tümünü seç

Jak się nazywasz?
cümlesini nasıl oluşturabilirim?

Bunu yapabilirsem gerisi halleceğim. Baya bir araştırma yaptım ama doyurucu bir bilgi bulamadım.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

delphi interface unicode gösteremez bildiğiniz gibi. tnt unicode vcl packet var.
bunda normal label edit vb.. herşey var. ayrıyeten çok faydalı olacak unicode fonksiyonları vb.. şeylerde var. bir inceleyin isterseniz.

http://www.tntware.com/delphicontrols/unicode/

Resim

Resim
.-.-.-.-.-.-.-. ^_^
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

merhaba,

@mege teşekkür ederim cevabın için. Bu soruyu forumda sormadan önce gerekli araştırmayı yaptım, bu bileşenleri gördüm indirdim, kurdum, inceledim. hatta baya bir uğraştım, aslında çok basit bir şeyi halledemedim. Örneğin web browserdan belirttiğim dildeki bir yazıyı, tntedit kullandığım bir projeyey kopyala yapıştır yöntemiyle yazıyorum. Sorun yok. Olması gerektiği gibi gösteriyor. Lakin ben kod içerisinden bu bileşenlere yazdırmak istediğimde aynı sonucu alamıyorum.

Webbrowser bileşeni kullanmak istemiyorum projede. Yani bunun kesin bir yöntemi olmalı. Unicode karakterler içeren yazılar String data türünden ziyade WideStringde tutuluyor. Her karakterde normal char türünden ziyade WideChar oluyor. İşte ben bu yapıları kullanarak, kod içerisinden istediğimi yazdırmak istiyorum.

Umarım açıklayabilmişimdir, kusura bakmayın cümleler devrik falan ama yorgunum baya

İyi çalışmalar
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

anladım utf8encode ve utf8decode fonksiyonlarını inceleyin. widestring tipinde bu vcllere atama yapabilirsiniz. copy paste olayınca windows kendisi kodlamayı çeviriyor, siz kodlama yaparken

Kod: Tümünü seç

var  sActiveLine :widestring;

Kod: Tümünü seç

//sActiveLine:=  UTF8Decode('太阳姚明�战仇敌�斯,�斯,1'); 
TntEdit1.text:= sActiveline;

bi örneğim
.-.-.-.-.-.-.-. ^_^
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

Herkese cevaplarından dolayı teşekkür ederim. Sorunu çözdüm. Araştırdım ve anladımki bu dönüşümü programcının yapması lazım. Ama bu programcı yaptığı işin doğru olup olmadığını kontrol etmek istediğinde Font'u Tahoma olarak değiştirmeli :D

Teşekkürler
Cevapla