On 18 December 2012 13:13, Albert-Jan Roskam <fo...@yahoo.com> wrote:
> I am trying to write a file with a 'foreign' unicode name (I am aware that 
> this is a highly western-o-centric way of putting it). In Linux, I can encode 
> it to utf-8 and the file name is displayed correctly. In windows xp, the 
> characters can, apparently, not be represented in this encoding called 
> 'mbcs'. How can I write file names that are always encoded correctly on any 
> platform? Or is this a shortcoming of Windows?

Eryksun has already explained the fix, but I'll answer this question.
It is not a short coming of Windows itself but rather a shortcoming of
the older ASCII based Win32 API that is being used by CPython. A long
time ago Windows obtained a newer improved "Unicode API" that supports
what at that time was considered to be Unicode. In Python, for
backward compatibility, the older API is used when you pass a byte
string as a filename. I believe this is the same in both recent 2.x
versions and 3.x versions of CPython.

The problem here is precisely that fact that you are encoding the
filename, rather than passing the unicode string directly to open().
This also isn't necessary on Linux unless you want to encode the
filename with something other than the sys.getfilesystemencoding().


Oscar
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to