Ansi to UTF-8 using python causing error
I tried the answer there to convert ansi to 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)
But I got "TypeError: 'encoding' is an invalid keyword argument for this function"
I tried with
with io.open(file_path_ansi, encoding='cp1252', errors='ignore') as source:
, too, and got same error.
Then I tried
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)
and still got the same error. Also I tried with cp1252, too, but got the same error.
I learned from several stackoverflow questions that
TypeError: 'encoding' is an invalid keyword argument for this function
is frequently arising error message in python 2.x
But mainly answerers were suggesting using python 3 in some way or the other.
Is it really impossible to convert ansi txt to utf-8 txt in python 2.x ? (I use 2.7)
I had the same issue when I did try to write bytes to file. So my point is, bytes are already encoded. So when you use encoding keyword this leads to an error.
For Python2.7, Use
io.open()
in both locations.The above program runs without errors on my PC.
This is how you can convert ansi to utf-8 in Python 2 (you just use normal file objects):
Use io, it will work in both 2.7 and 3.6 python version