2.23. Unicode

Python 2.0 kunne anvende grundtypen Unicode strenge. Unicode bruger 16-bit tal til at repræsentere karakterer i stedet for de 8-bits tal, der bruges af ASCII. Det betyder, at der i stedet for 256 tegn i en tegntabel nu er plads til 65.536 forskellige tegn.

I Python kildekode, det du skriver, når du programmerer i Python, skrives Unicode strenge som u"tekststreng". Unicode karakterer ved hjælp af escape sekvensen \\uHHHH, hvor HHHH er et 4-cifret hexadecimalt tal fra 0000 til FFFF. Den eksisterende \\xHHHH escape sekvens kan også anvendes. Det samme gælder oktale escape sekvenser for karakterer op til U+01FF, der repræsenteres af \\777. Jeg har ikke fundet det nødvendigt at tage eksempler med her, men skal gøre opmærksom på at Python 2.4 også skulle kunne håndtere 32 og 64 bits unicoder.

En konvertering til Unicode streng returnerer en 8-bit streng i det ønskede kodeformat, der eksempelvis kan være 'ascii', 'utf-8' eller den vi vel nok oftest benytter i Danmark 'iso-8859-1'.

Sammenføjning af 8-bit og Unicode strenge vil altid returnere en Unicode streng.

eks: >>> 'a' + u'bc' u'abc'

2 metoder til målet:

>>> "Nexø" 'Nex\xf8' >>> print "Nexø" Nexø

2 andre metoder til 2 ANDRE mål: >>> print "Rønne" Rønne

>>> print str("Rønne") Rønne

Sådan skulle ord funktionen anvendes i Python med lavere versionsnummer end 2.3:

>>> ord(u'\xc6') 198

Fordi: >>> ord("Æ")

UnicodeError: ASCII encoding error: ordinal not in range(128)

Og sådan nu (med Python version 2.3): >>> ord("Æ") 198

Talværdien 198 er bogstavets korrekte nummer i Unicode tabellen.

>>> u"Computersproget\u0020Python\u0020er\u0020fra\u00201991" u'Computersproget Python er fra 1991' >>>

Konverter unicode streng til gammeldags 8-bit streng >>> u"æøåÆØÅ".encode('utf-8') '\xc3\xa6\xc3\xb8\xc3\xa5\xc3\x86\xc3\x98\xc3\x85' >>>