David542
David542

Reputation: 110083

UnicodeEncodeError -- utf8 and unicode() not working

I have a synopsis as follows:

synopsis = 'Eine Geschichte, wie im normalen Leben... Der als äußerst vorsichtig 
            geltende Risikoanalytiker Ruben verlässt seine Frau,...'

I am trying to write this to a file, but keep running into:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 705: ordinal not in range(128)

Here is what I've tried:

synopsis = unicode(synopsis)
new_file.write('%s' % synopsis)

synopsis = synopsis.encode('utf-8')
new_file.write('%s' % synopsis)

In addition, I have # # -*- coding: utf-8 -*- specified at the top of my file.

Why is this occurring and how can I fix it?

Upvotes: 0

Views: 169

Answers (1)

ephemient
ephemient

Reputation: 204678

How are you opening new_file?

import codecs
new_file = codecs.open('out', mode='w', encoding='utf-8')

This should allow you to write Unicode strings to the file, which will be encoded as UTF-8.

(Unless otherwise set, sys.getdefaultencoding() is 'ascii', which affects the encoding of newly-opened files.)

Upvotes: 1

Related Questions