how to write a unicode string to a file ?

Stephen Fairchild somebody at somewhere.com
Fri Oct 16 16:32:40 EDT 2009


Stef Mientki wrote:

> hello,
> 
> By writing the following unicode string (I hope it can be send on this
> mailing list)
> 
>     Bücken
> 
> to a file
> 
>      fh.write ( line )
> 
> I get the following error:
> 
>   UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in
> position 9: ordinal not in range(128)
> 
> How should I write such a string to a file ?

Your code fails because the unicode string denoted by the name, line, cannot
be converted to ASCII, which python silently tries to do.

Instead, use a compatible character encoding. Note the explicit conversion.

    fh.write(line.encode('utf-8'))

Alternatively, you can write sixteen bit unicode directly to a file:

    import codecs

    f = codecs.open('unicodetest.txt', mode='w', encoding='utf-16')
    f.write(u'Hello world\n')
    f.close()
-- 
Stephen Fairchild



More information about the Python-list mailing list