8
votes

Unicode UTF-8 / UTF-16 coding en python

en python: xxx

est-il utf-16?

Je ne suis pas vraiment conscient de toutes les choses unicode / codage, mais ce type de chose se présente dans mon jeu de données, comme si j'ai a = u 'u3053 \ n' .

impression donne une exception et Le décodage donne une exception. xxx

Qu'est-ce qui se passe ici?


4 Réponses :


1
votes

Voici le DOC HOWTO UNICODE POUR PYTHON 2.6.2:

http://docs.python.org/howto/unicode.html

Voir également les liens de la section de référence de ce document pour d'autres explications, dont une de Joel Spolsky.


0 commentaires

10
votes

C'est un caractère unicode qui ne semble pas être affiché dans vos terminaux codant. impression code> essaie d'encoder l'objet Unicode dans le codage de votre terminal et si cela ne peut pas être fait, vous obtenez une exception.

sur un terminal pouvant afficher UTF-8, vous obtenez: P>

>>> print u'\u3053'
こ


1 commentaires

Merci oui, PowerShell, même PowerShell Ise ne semble pas «compatible» (faute d'une meilleure compréhension) avec Unicode dans Python. Stackoverflow .com / questions / 2105022 / ...



3
votes

Caractère U + 3053 "Lettre Hiragana Ko".

Le bit \ xff \ xfe au début du format binaire UTF-16 est le point de commande d'octet codé (U + FEFF), puis "S0" est \ x5e \ x30 , alors il y a le \ n de la chaîne d'origine. (Chacun des caractères a ses octets "inversés" car il utilise peu d'encodage de l'UTF-16 Endian UTF-16.)

Le formulaire UTF-8 représente le même caractère Hiragana sur trois octets, avec le motif de bits comme documenté ici .

Maintenant, quant à savoir si vous devriez vraiment l'avoir dans votre ensemble de données ... Où ces données viennent-elles? Est-il raisonnable d'avoir des caractères Hiragana?


0 commentaires

8
votes

Vous demandez:

u '\ u3053 \ n'

est-ce utf-16?

La réponse est non: c'est unicode, pas un encodage spécifique. UTF-16 est un codage.

Pour imprimer efficacement une chaîne unicode sur votre terminal, vous devez déterminer ce qui codant de ce terminal est prêt à accepter et à pouvoir afficher. Par exemple, le terminal.app sur mon ordinateur portable est défini sur UTF-8 et avec une police riche, donc:

 capture d'écran
(Source: Aleax.it )

... la lettre Hiragana s'affiche correctement. Sur un poste de travail Linux, j'ai un programme terminal qui continue à réinitialiser à la latine-1 de sorte que cela mangeait quelque peu les choses, je peux la définir à UTF-8, mais il n'a pas d'énorme nombre de glyphes dans la police. Il afficherait plutôt des glyphes de placement quelque peu inutiles.


1 commentaires

Est-il possible d'imprimer des caractères UTF-16 dans Python?