Pourquoi nous avons différentes représentations de chaînes orientées octets en Python 3? Ne suffira-t-il pas d'avoir une représentation unique au lieu de multiple?Python-3 et x Vs u Vs U dans le codage de chaîne et pourquoi
Pour le numéro de plage ASCII impression d'une chaîne montre une séquence commençant par \x
:
In [56]: chr(128)
Out[56]: '\x80'
Dans une autre gamme de nombres, il Python utilise une séquence commençant par \u
In [57]: chr(57344)
Out[57]: '\ue000'
Mais les chiffres dans la la plus haute gamme, à savoir le nombre d'Unicode maximal à partir de maintenant, il utilise l'un des principaux \U
:
In [58]: chr(1114111)
Out[58]: '\U0010ffff'
La même logique ne s'applique pas ici '\ U0010ffff'' et devrait plutôt être comme \ u10ffff ou' \ u10ffff ' – MaNKuR
@MaNKuR: non, car la syntaxe '\ U' est une largeur fixe. Il faut 8 caractères hexadécimaux; et la syntaxe '\ u' prend 4. Si elles ont pris un nombre variable de caractères hexadécimaux, vous ne pourriez pas les suivre avec d'autres lettres ascii ou chiffres qui ont juste une signification hexadécimale mais ne font pas partie de la séquence d'échappement. –
@MaNKuR: '\ U' est de 8 caractères hexadécimaux parce que la norme Unicode pourrait éventuellement être étendue pour avoir besoin de tous ces chiffres. Tout simplement parce que le codepoint maximum est '\ U0010FFFF' aujourd'hui ne signifie pas qu'une future mise à jour de la norme Unicode n'atteindra jamais' \ UFFFFFFFF'. –