Tonguç Yumruk'un Weblog'u
Anlık olaylar, fikirler, gudik ismail vs...

Tue, 02 Nov 2004

Aylar süren arama inceleme, o olur, bu olmaz, bu çok kompleks gibi şeylerden sonra Mambo'da karar kıldım. Kurdum, şimdi herkes çok mutlu.

Python ve Unicode hakkında

Geçen hafta hem Robert Love hem de Gürer Özen Python ile aynı problemi yaşamışlar. Bir dönem beni de Python'dan vazgeçmenin sınırlarına getiren bu konu hakkında bir açıklama yapma ihtiyacı duydum. (Robert oğlum evladım öyle çevrene bakma dersi dinle)

Python'da metinleri ifade etmek için iki fgarklı veri tipi vardır. Biri bildiğimiz tek byte'lık karakterlerden oluşan string tipi, diğeri ise Unicode verilerini ifade etmekte kullanılan unicode tipi. Böyle iki farklı veri tipi olmasının sebebi ise 1.5.1 sürümünde Python'a Unicode desteği ekleneceği zaman Guido'nun string'i unicode destekleyecek hale getirmektense unicode diye ayrı bir veri tipi icat etmiş olması.

Şimdi gelelim print meselesine. Print anahtar sözcüğü kendisine verilen değişkenlerin __str__ fonksiyonunu çağırarak sonuçta dönen string nesnesini ekrana yazar. Bildiğim kadarıyla bu noktada şöyle bir sorun vardır. Unicode nesnesinin __str__ fonksiyonu içerdiği unicode verisini utf-8 değil ascii olarak encode (bunun türkçe bir karşılığı olmalı) etmeye çalışır ve eğer ascii karakter seti dışından bir karakterle uğraşıyorsanız o meşhur Exception'ı yaratır. Bunun en basit çözümü Unicode nesnelerini direkt olarak yazdırmaktansa print u"şŞğĞıİ".encode("utf-8") şeklinde kullanmaktır. Tabii bunun yerine string gibi davranıp, veriyi unicode olarak saklayan sonra da utf-8 olarak size iade eden bir sınıf yazabilirsiniz. Tabii bu durumda her seferinde benimstring = utfstring("yağış") yazmanız gerekecektir ki bu da u"yağış" yazmanın yanında hamallıktır, ama belki yerelleştirme gibi bazı özellikleri de içine yükleyerek oldukça kullanışlı bir sınıf elde edebilirsiniz. Gerisi size kalmış...

[09:41] | [/kod] | # | G! |
Elektrikli Posta
Uptime
1 yıl, 26 gün, 4 saat, 31 dakika
Çocuklara Bilgisayar
Kategoriler
/ (201)
  dev/ (13)
  kod/ (28)
  life/ (2)
  linux/ (38)
    freedays/ (2)
    senlik/ (0)
      2006/ (15)
  misc/ (58)
  mobil/ (3)
  musiki/ (18)
  net/ (10)
  tech/ (9)
  web/ (5)
Zaman Makinesi
< November 2004 >
SuMoTuWeThFrSa
  1 2 3 4 5 6
7 8 910111213
14151617181920
21222324252627
282930    
Kapı Komşuları
Güzel Siteler
Ivır zıvır
XML Feed

FSF Associate Member: 2040

Powered by PyBlosxom

Valid XHTML 1.0!