Daniel U. Thibault added the comment: "The default encoding is normally set to ASCII [...]. When a Unicode string is printed, written to a file, or converted with str(), conversion takes place using this default encoding."
>>> u"äöü" u'\xe4\xf6\xfc' Printing a Unicode string uses ASCII encoding: false (the characters are not converted to their ASCII equivalents) (compare with str(), below) >>> str(u"äöü") Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) Converting a Unicode string with str() uses ASCII encoding: true (if print (see above) behaved like str(), you'd get an error too) >>> f = open('workfile', 'w') >>> f.write('This is a «test»\n') >>> f.close() Writing a Unicode string to a file uses ASCII encoding: false (examination of the file reveals UTF-8 characters (hex dump: 54 68 69 73 20 69 73 20 61 20 C2 AB 74 65 73 74 C2 BB 0A)) ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue20686> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com