J'utilise Python 3.1 sur une machine Windows 7. Le russe est la langue système par défaut, et utf-8 est l'encodage par défaut.
En regardant la réponse à une question précédente J'ai essayé d'utiliser le module "codecs" pour avoir un peu de chance. Voici quelques exemples :
>>> g = codecs.open("C:\Users\Eric\Desktop\beeline.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#39>, line 1)
>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#40>, line 1)
>>> g = codecs.open("C:\Python31\Notes.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 11-12: malformed \N character escape (<pyshell#41>, line 1)
>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#44>, line 1)
Ma dernière idée était, je pensais que cela pouvait être le fait que Windows "traduit" quelques dossiers, comme le dossier "users", en russe (bien que taper "users" soit toujours le chemin correct), donc j'ai essayé dans le dossier Python31. Toujours pas de chance. Avez-vous des idées ?
8 votes
@Wahnfrieden Quoi ? Python 2 est appelé à disparaître dans le futur, il est donc logique d'utiliser Python 3, malgré son "manque" de "maturité".
0 votes
@Beau Martinez @orip Le manque (important) de soutien de la part des bibliothèques est une raison suffisante dans la plupart des cas. Avec les fonctionnalités de Py3k rétroportées vers Python 2.6 et 2.7, le portage vers 3.x plus tard sera de toute façon facile, et vous ne sacrifiez pas une quantité énorme de support de bibliothèques (ce qui est particulièrement dangereux si vous êtes un nouvel utilisateur et que vous ne pouvez pas anticiper correctement les bibliothèques que vous voulez).
0 votes
Les chaînes de caractères par défaut de Python 3 sont des chaînes de caractères unicode, donc
\u
est actif, et donc la chaîne littérale'\ufoo'
soulève unSyntaxError
. En Python 2, les chaînes de caractères par défaut ne sont pas des chaînes unicode, donc\u
est inactif, et donc la chaîne littérale'\ufoo'
ne soulève aucune erreur. En revanche, la chaîne littéraleb'\ufoo'
fait pas soulève une erreur quelconque en Python 3, et le littéral chaîne de caractèresu'\ufoo'
fait soulève une erreur dans Python 2.