[Çözüldü] python türkçe karakter sorunu

Başlatan acemiyim, 22 Kasım 2013 - 21:07:57

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

acemiyim

Merhaba,

Python 2.7.5+, sürümünde bir modül kullanarak türkçe karakterler ile yazı yazdırmayı deniyorum. Fakat türkçe karakterler içi boş kare biçiminde gözükmekte.

Nette araştırdığım ve bildiğim yöntemleri denedim ascii-unicode problemini gidermek için ama sonuç alamadım. Kullandığım modülün python 3 sürümü bulunmamakta araştırmalarıma göre. Denediğim şeyleri aşağıda belirttim. Bu problemi daha önceden de "dosya girdi çıktı" işlemleminde dosya adı belirlemede de yaşamıştım. Bir çözüm bulamamıştım. python u çok iyi bilmediğimi kabul ediyorum ama bu denemelerimden birinde de çalışması gerekiyordu gibi hissediyorum. Sanki başka bir problem varmış gibi geliyor.

Kullandığım modül python da sanırım standart olarak geliyor. pdf işlemek için kullanılan "reportlab" modülü.

Denediğim şeyler:
1-python betiğinin başlangıcına
#!/usr/bin/env python
#-*-coding:utf-8-*-

satırını ekledim. Zaten hep eklerim.

2-türkçe karakter içeren string i tanımlarken decode ifadesini kullandım
metin = "asdişüğ".decode("utf-8")

3-türkçe karakter içeren string i "u" ile atama
metin = u"asdişüğ"

4-kullandığım kütüphanenin kullanım klavuzunda unicode karakterler için önerilen yöntem olan
metin = "asdişüğ"
uniMetin = unicode(metin,'utf-8')


en basit hali ile yapılmış küçük bir kod parçası:
#!/usr/bin/env python
# -*- coding: utf8 -*-

from reportlab.pdfgen.canvas import Canvas               
c = Canvas("deneme.pdf")
c.drawString(100,500,"asdişüğ".decode("utf-8"))
c.save()



if

@acemiyim, Python'dan zerre kadar anlamayan biri olarak bir öneri sunuyorum:) 'Shebang' satırını #!/usr/bin/python2.7 olarak değiştirince bir gelişme var mı?

egcodes

Selamlar, şu http://stackoverflow.com/questions/10958904/report-lab-cant-handle-hebrew-unicode bağlantıda en alttaki cevabı uyguladığımda çözüme ulaştım. Ama biraz değiştirdim. Font olarak Arial seçince türkçe karakterleri yazdı. Muhtelemen font ile alakalı bir durum. Emin değilim ama.

Bu kod bende çalıştı.
# -*- coding: utf-8 -*-

from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

pdfmetrics.registerFont(TTFont('Hebrew', 'Arial.ttf'))

c = canvas.Canvas("hello.pdf")
c.setFont("Hebrew", 14)
c.drawString(10,10, u"şelale".encode('utf-8'))
c.save()
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d

acemiyim

@if
Ne yazıkki hangi python sürümü ile yapmamı söyleyen satır öneriniz işe yaramadı.

@egcodes
Verdiğiniz kod örneği işe yaradı. Teşekkür ederim. Aslında aramalarım da o sayfayı ben de ziyaret etmiş ve örnekleri denemiştim. Sizin verdiğiniz örneğin benzerini modülün kullanım klavuzundaki örneğe göre yapmış fakat nedense sonuç alamamıştım. PDF in yapısı ile alakalı bir sorun yaşamışım sanırım ben. PDF, heryerde açılabilsin diye dosya içinde gerekli fontları taşımakta ve ben türkçe karakter gösterebilen bir font tipi kullanmadığımdan oluşturulan dökümanda türkçe karakterleri göremiyordum diye bir sonuca varıyorum.

Bir kez daha sadece programlama dili kurallarını öğrenerek iyi bir program yazarı olunmadığını : ) Kullandığım modüller ve programın üzerinde çalıştığı işletim sistemi üzerinde de bilgi sahibi olmanın önemini anladım. Yardımlarınız için teşekkür ederim.