28.01.2015 Views

Tutorial Python - Starship

Tutorial Python - Starship

Tutorial Python - Starship

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

La început au existat numai 256 de numere fiecare având asociat un caracter, şi toate textele erau asociate unei<br />

”pagini de cod”(code page) care făcea legătura între caractere şi numerele asociate. Acest lucru a creat foarte<br />

multă confuzie odată cu internaţionalizarea software-ului (scriere usuală : ‘i18n’ — ‘i’ + 18 characters + ‘n’).<br />

Unicode rezolvă aceste probleme asociând o singură pagină tuturor script-urilor.<br />

Crearea şirurilor de caractere Unicode este la fel de simplă ca şi crearea şirurilor obişniute :<br />

>>> u’Hello World !’<br />

u’Hello World !’<br />

Caracterul ‘u’ din faţa ghilimelelor şirului indică interpretorului că trebuie să creeze un şir Unicode din expresia<br />

care urmează. Dacă doriţi să includeţi în şir caractere speciale, o puteţi face foarte simplu folosind codarea <strong>Python</strong><br />

Unicode-Escape. Iată un exemplu:<br />

>>> u’Hello\u0020World !’<br />

u’Hello World !’<br />

Secvenţa escape \u0020 indică interpretorului să insereze caracterul cu ordinalul 0x0020 (caracterul spaţiu) înpoziţia<br />

precizată. Alte caractere sunt utilizate folosind direct valoarea ordinalului său ca ordinal Unicode. Datorită<br />

faptului că primele 256 de caractere Unicode sunt aceleaşi ca şi în notaţia standard Latin-1, folosită în multe ţări<br />

occidentale, procesul de introducere a caracterelor Unicode devine mult mai simplu.<br />

Pentru experţi există şi un mod brut (raw-mode) identic cu cel utilizat pentru şirurile normale. Înaintea ghilimelelor<br />

şirului trebuie adăugat ’ur’ pentru ca <strong>Python</strong> să intre în modul Unicode direct. Conversiile \uXXXX sunt utilizate<br />

numai dacă este folosit un număr impar de caractere backslash(’\’, înaintea caracterului ’u’:<br />

>>> ur’Hello\u0020World !’<br />

u’Hello World !’<br />

>>> ur’Hello\\u0020World !’<br />

u’Hello\\\\u0020World !’<br />

Mod raw poate fi foarte util dacă aveţi de introdus un număr mare de backslash-uri.<br />

În afară de metodele de codare standard, <strong>Python</strong> oferă multe alte metode de a crea şiruri Unicode, pe baza codărilor<br />

cunoscute.<br />

Funcţia predefinită unicode() permite accesarea tuturor CODEC-urilor Unicode (CODEC = COder & DE-<br />

Coder). Câteva dintre codificările foarte cunoscute ale caror CODEC-uri au fost convertite sunt : Latin-1, ASCII,<br />

UTF-8 şi UTF-16. Ultimele două permit stocarea caracterelor Unicode pe unul sau mai mulţi octeţi. Codificarea<br />

implicită este ASCII, care permite treacerea caracterelor cuprinse între 0 şi 127, dar blocheză celelalte caractere<br />

semnalizând eroare. Când un şir Unicode este tipărit, scris într-un fişier, sau convertit cu funcţia str(), conversia<br />

porneşte utilizând codarea implicită.<br />

>>> u"abc"<br />

u’abc’<br />

>>> str(u"abc")<br />

’abc’<br />

>>> u"äöü"<br />

u’\xe4\xf6\xfc’<br />

>>> str(u"äöü")<br />

Traceback (most recent call last):<br />

File "", line 1, in <br />

UnicodeError: ASCII encoding error: ordinal not in range(128)<br />

Pentru a converti un şir Unicode într-un şir pe 8 biţi utilizând o anumită codificare, obiectele Unicode furnizează<br />

metoda encode(), care are un singur argument, numele codului. Este de preferat ca numele codurilor să se scrie<br />

cu litere mici.<br />

14 Capitolul 3. O scurtă introducere în <strong>Python</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!