3.1.3 Unicode Strings

O Python suporta caracteres em diferentes linguagens usando o padrão Unicode. Os dados Unicode podem ser armazenados e manipulados da mesma forma que as strings. Por exemplo, criar strings Unicode no Python é tão simples quanto criar strings normais:

    >>> u'Hello World !'
    u'Hello World !'

O pequeno ‘u’ na frente da citação indica que uma string Unicode que deve ser criada. Se você quiser incluir caracteres especiais na seqüência de caracteres, você pode fazê-lo usando a codificação Python Unicode-Escape. O exemplo a seguir mostra como:

    >>> u'Hello\u0020World !'
    u'Hello World !'

A sequência de escape \u0020 insere o caractere Unicode com o valor ordinal 0x0020 (o caracter do espaço) na posição dada.Outros caracteres são interpretados usando seus respectivos valores ordinais diretamente como ordinários Unicode. Se você possui literais de strings na codificação Latin-1 padrão que é usada em muitos países ocidentais, você achará conveniente que os 256 caracteres menores do Unicode sejam os mesmos que os 256 caracteres do Latin-1.Para especialistas, há também um modo bruto, como o de strings normais. Você deve prefixar a citação de abertura com ‘ur’ para que Python use a codificação Raw-Unicode-Escape. Só aplicará a conversão \uXXXX acima se houver um número desigual de barras invertidas na frente do pequeno ‘u’.

    >>> ur'Hello\u0020World !'
    u'Hello World !'
    >>> ur'Hello\\u0020World !'
    u'Hello\\\\u0020World !'

850/5000
O modo bruto é mais útil quando você precisa inserir muitas barras invertidas, como pode ser necessário em expressões regulares.Além dessas codificações padrão, o Python fornece um conjunto completo de outras formas de criar strings Unicode com base em uma codificação conhecida. A função incorporada unicode() fornece acesso a todos os codecs Unicode registrados (COders e DECoders). Algumas das codificações mais conhecidas que esses codecs podem converter são Latin-1, ASCII, UTF-8 e UTF-16. Os dois últimos são codificações de comprimento variável que armazenam cada caractere Unicode em um ou mais bytes. A codificação padrão normalmente é configurada para ASCII, que passa por caracteres no intervalo de 0 a 127 e rejeita qualquer outro caractere com um erro. Quando uma cadeia Unicode é impressa, escrita em um arquivo ou convertida com str(), a conversão ocorre usando essa codificação padrão.

>>> u"abc"
u'abc'
>>> str(u"abc")
'abc'
>>> u"äöü"
u'\xe4\xf6\xfc'
>>> str(u"äöü")
Traceback (most recent call last):
File "", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode characters
in position 0-2: ordinal not in range(128)

Para converter uma seqüência de caracteres Unicode em uma cadeia de 8 bits usando uma codificação específica, os objetos Unicode fornecem um método encode() que leva um argumento, o nome da codificação. Os nomes minúsculos para codificações são preferidos.

>>> u"äöü".encode('utf-8')
'\xc3\xa4\xc3\xb6\xc3\xbc'

Se você tiver dados em uma codificação específica e quiser produzir uma seqüência Unicode correspondente, pode usar a função unicode() com o nome da codificação como o segundo argumento.

    >>> unicode('\xc3\xa4\xc3\xb6\xc3\xbc', 'utf-8')
    u'\xe4\xf6\xfc'
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s