Ansi to UTF-8 utilisant python provoquant une erreur
J'ai essayé la réponse ici pour convertir ansi en utf-8.
import io
with io.open(file_path_ansi, encoding='latin-1', errors='ignore') as source:
with open(file_path_utf8, mode='w', encoding='utf-8') as target:
shutil.copyfileobj(source, target)
Mais j'ai "TypeError: 'encoding' est un argument de mot clé invalide pour cette fonction"
J'ai essayé avec
with io.open(file_path_ansi, encoding='cp1252', errors='ignore') as source:
aussi et j'ai la même erreur.
Puis j'ai essayé
import io
with io.open(file_path_ansi, encoding='latin-1', errors='ignore') as source:
with io.open(file_path_utf8, mode='w', encoding='utf-8') as target:
shutil.copyfileobj(source, target)
et a toujours la même erreur. J'ai aussi essayé avec cp1252, mais j'ai eu la même erreur.
J'ai appris de plusieurs questions de stackoverflow que
TypeError: 'encoding' is an invalid keyword argument for this function
se produit fréquemment un message d'erreur dans python 2.x
Mais principalement les répondants ont suggéré d'utiliser python 3 d'une manière ou d'une autre.
Est-il vraiment impossible de convertir ansi txt en utf-8 txt dans python 2.x? (J'utilise 2.7)
Pour Python2.7, utilisez io.open()
aux deux emplacements.
import io
import shutil
with io.open('/etc/passwd', encoding='latin-1', errors='ignore') as source:
with io.open('/tmp/goof', mode='w', encoding='utf-8') as target:
shutil.copyfileobj(source, target)
Le programme ci-dessus fonctionne sans erreur sur mon PC.
Voici comment convertir ansi en utf-8 en Python 2 (vous utilisez simplement des objets de fichier normaux)):
with open(file_path_ansi, "r") as source:
with open(file_path_utf8, "w") as target:
target.write(source.read().decode("latin1").encode("utf8"))
TypeError: 'encoding' est un argument de mot clé invalide pour cette fonction
open('textfile.txt', encoding='utf-16')
Utilisez io, cela fonctionnera dans les versions 2.7 et 3.6 python version
import io
io.open('textfile.txt', encoding='utf-16')
J'ai eu le même problème lorsque j'ai essayé d'écrire des octets dans un fichier. Donc, ce que je veux dire, les octets sont déjà codés. Ainsi, lorsque vous utilisez un mot clé d'encodage, cela génère une erreur.