#!/usr/bin/env python # -*- coding: utf-8 -*- import ConfigParser, codecs myfile = open("test1234.txt", "w") testString = u"\u0411" try: myfile.write(testString) except UnicodeEncodeError as e: print("Expected: {}".format(e)) wrappedFile = codecs.getwriter("utf-8")(myfile) wrappedFile.write(testString) # works as expected cParser = ConfigParser.ConfigParser() cParser.add_section("TestSection") cParser.set("TestSection", "unicode", testString) cParser.write(wrappedFile) # raises exception: # Traceback (most recent call last): # File "test.py", line 22, in # cParser.write(wrappedFile) # File "/usr/lib/python2.7/ConfigParser.py", line 404, in write # key = " = ".join((key, str(value).replace('\n', '\n\t'))) # UnicodeEncodeError: 'ascii' codec can't encode character u'\u0411' # in position 0: ordinal not in range(128)