...il y a une raison pour laquelle ils sont appelés "encodages"...
Un petit préambule: pensez à unicode comme la norme, ou de l'état idéal. Unicode est juste un tableau de caractères. №65 latin capital A. №937 est capitale grecque oméga. Juste que.
Pour qu'un ordinateur pour stocker et-ou de manipuler Unicode, il a pour encoder en octets. Le plus simple est le codage de l'Unicode UCS-4; chaque caractère occupe 4 octets, et tous les ~1000000 caractères sont disponibles. Le 4 octets contiennent le nombre de caractère dans les tableaux Unicode comme un entier de 4 octets. Un autre très utile encodage est UTF-8, qui peut encoder n'importe quel caractère Unicode avec un à quatre octets. Mais il y a aussi quelques rares encodages, comme "latin1", qui comprennent une gamme limitée de caractères, utilisé surtout par les pays Occidentaux. Ces codages utilisez uniquement un octet par caractère.
Fondamentalement, Unicode peut être codé avec de nombreux encodages, et encodées peuvent être décodés en Unicode. Le truc, c'est de l'Unicode est venu assez tard, donc chacun d'entre nous qui ont grandi avec un 8-bit jeu de caractères appris trop tard que tout ce temps, nous avons travaillé avec codé cordes. L'encodage peut être ISO8859-1 ou windows CP437, ou CP850, ou, ou, ou, selon notre système par défaut.
Ainsi, lorsque, dans votre code source, vous saisissez la chaîne de caractères "ajouter "Suivi" pour la liste" (et je pense que vous vouliez la chaîne "ajouter "Suivi" pour la liste", note la deuxième citation), vous êtes réellement en utilisant une chaîne de caractères déjà codé en fonction de votre système de page de codes par défaut (par l'octet \x93 je suppose que vous utilisez Windows page de codes 1252, "l'Ouest"). Si vous souhaitez obtenir Unicode, vous devez décoder la chaîne à partir de la "cp1252" encoding.
Donc, ce que vous vouliez faire, c'est:
"add \x93Monitoring\x94 to list".decode("cp1252", "ignore")
Il est malheureux que Python 2.x inclut un .encode
méthode pour les chaînes de trop; c'est une fonction de commodité pour le "spécial" encodages, comme le "zip" ou "rot13" ou "base64", qui n'ont rien à voir avec Unicode.
De toute façon, tout ce que vous avez à retenir pour vos va-et-vient conversions Unicode est:
- une chaîne Unicode obtient codé à un Python 2.x chaîne (en fait, une séquence d'octets)
- un Python 2.x chaîne est décodé à une chaîne Unicode
Dans les deux cas, vous devez spécifier l' encodage qui sera utilisé.
Je ne suis pas très clair, je suis endormi, mais j'espère bien que je l'aide.
PS UN côté humoristique remarque: les Mayas n'ont pas Unicode; les Romains de l'antiquité, les Grecs de l'antiquité, les Égyptiens de l'antiquité n'a pas trop. Ils avaient tous leur propre "encodages", et avaient peu ou pas de respect pour les autres cultures. Toutes ces civilisations s'est effondrée à la poussière. Penser les gens! Votre application Unicode, pour le bien de l'humanité. :)
PS2 s'il vous Plaît ne pas gâcher le précédent message en disant: "Mais les Chinois...". Si vous vous sentez enclin ou l'obligation de le faire, cependant, le retard en pensant que l'Unicode BMP est peuplée principalement par des idéogrammes chinois, ergo Chinois est à la base de l'Unicode. Je peux aller sur d'inventer scandaleux mensonge, tant que les gens développent Unicode applications. Cheers!