> I think that using ASCII is a safer choice in case of errors.
I choosed UTF-8 to keep backward compatibility: PyUnicode_DecodeFSDefaultAndSize() uses utf-8 if Py_FileSystemDefaultEncoding==NULL. If the OS has no nl_langinfo(CODESET) function at all, Python3 uses utf-8.
> Using UTF-8 may be safe for reading file names, but it's not
> safe for creating files or directories.
Well, I don't know. You are maybe right. And which encoding should be used if nl_langinfo(CODESET) function is missing: ASCII or UTF-8?
UTF-8 is also an optimist choice: I bet that more and more OS will move to UTF-8.