Unicode məsələsi

Python 3.0 versiyasından başlayaraq ancaq Unicode-u dəstəkləyir. Unicode-un üstünlüyü ondan ibarətdir ki, burada bütün dünya dillərinin simvollarını göstərmək olur. Əvvəllər istifadə olunan ASCII isə bir kod səhifəsində yalnız 256 fərqli simvolu kodlaşdırmağa imkan verirdi. Bu isə proqramların beynəlmiləlləşdirilməsində bir sıra problemlər meydana gətirirdi. Unicode-un tətbiqi ilə bu problemlər ortadan qalxdı və vahid kod səhifəsində istənilən qrafikalı əlifbaların hərflərini, müxtəlif simvolları təqdim etmək mümkün oldu.
Sətirdə istənilən simvolu Unicode ekranlaşdırma (Python Unicode-Escape encoding) ilə vermək olar:

>>> print("Salam\u0020Azərbaycan") 
Salam Azərbaycan
>>>

Burada ekranlaşdırılmış \u0020 ardıcıllığı Unicode-da boşluq (probel) simvolunu verir. Unicode kodlaşdırmasındakı ilk 128 simvol bir çox qərb ölkəsində istifadə olunan Latin-1 kodlaşdırmasındakı 128 simvol ilə tamamilə üst-üstə düşür.
Python proqramlaşdırma dilində encode() metodu ilə sətirləri müxtəlif kodlaşdırmalardan istifadə etməklə baytlar ardıcıllığına çevirmək mümkündür. Aşağıdakı nümunədə verilmiş Unicode sətri utf-8 kodlaşdırması ilə baytlar ardıcıllığına çevrilir:

>>> "Şamaxı Rəsədxanası".encode('utf-8') 
b'\xc5\x9eamax\xc4\xb1 R\xc9\x99s\xc9\x99dxanas\xc4\xb1' 
>>>

Bir məsələni də qeyd edək ki, Python’un yeni versiyalarında fayllara Unicode sətirlərinin yazılması zamanı utf-8 kodlaşdırmasından istifadə etmək tələb olunmur. Köhnə versiyalarda isə bunu etmək lazım gəlirdi, əsk halda, aşağıdakı xəta qeydə alınırdı:

>>> f = open('test.txt','w')
>>> f.write('Azərbaycan') 
Traceback (most recent call last):
 File "<pyshell#7>", line 1, in <module> 
  f.write('Azərbaycan')
UnicodeEncodeError: 'ascii' codec can't encode character 
'\u0259' in position 2: ordinal not in range(128)
>>>

Fayla yazılan sətirlərdə Unicode simvolları olardısa, hökmən open() funksiyasında encoding parametrindən istifadə edilməli idi:

>>> f = open('test.txt', 'w', encoding = 'utf-8') 
>>> f.write('Azərbaycan')
10
>>> f.close()
>>>

Aşağıdakı proqram isə utf-8 ilə kodlaşdırılmış mətni yenidən Unicode sətirlərinə çevirib ekrana çıxarır:

>>> f = open('test.txt','r', encoding = 'utf-8') 
>>> f.read()
'Azərbaycan'
>>> f.close()
>>>

Unicode məsələsi” üçün bir şərh

Şərh üçün bağlıdır.