UnicodeEncodeError: 'charmap' codec can't encode characters UnicodeEncodeError: 'charmap' codec can't encode characters python python

UnicodeEncodeError: 'charmap' codec can't encode characters


I was getting the same UnicodeEncodeError when saving scraped web content to a file. To fix it I replaced this code:

with open(fname, "w") as f:    f.write(html)

with this:

with open(fname, "w", encoding="utf-8") as f:    f.write(html)

If you need to support Python 2, then use this:

import iowith io.open(fname, "w", encoding="utf-8") as f:    f.write(html)

If your file is encoded in something other than UTF-8, specify whatever your actual encoding is for encoding.


I fixed it by adding .encode("utf-8") to soup.

That means that print(soup) becomes print(soup.encode("utf-8")).


In Python 3.7, and running Windows 10 this worked (I am not sure whether it will work on other platforms and/or other versions of Python)

Replacing this line:

with open('filename', 'w') as f:

With this:

with open('filename', 'w', encoding='utf-8') as f:

The reason why it is working is because the encoding is changed to UTF-8 when using the file, so characters in UTF-8 are able to be converted to text, instead of returning an error when it encounters a UTF-8 character that is not suppord by the current encoding.