From 4c6603371f70e42ce5236c14a5eea8f0a5027e80 Mon Sep 17 00:00:00 2001 From: David Vierra Date: Wed, 13 May 2015 21:36:31 -1000 Subject: [PATCH] Encoding pathnames with sys.getfilesystemencoding is always wrong. On Windows this encodes with the current codepage, which often fails for characters not in the codepage. On Windows, FS functions accept 'unicode' and encode as UTF-16 for WinAPI On Mac, FS functions accept 'unicode' and encode as UTF-8 for FS API On Linux, filenames are byte strings and encoding is only a convention. FS functions encode 'unicode' according to locale. On Linux, it is possible to have files whose names cannot be decoded in any character set! --- src/mceditlib/minecraft_server.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/mceditlib/minecraft_server.py b/src/mceditlib/minecraft_server.py index 4de4f28..57e6d53 100644 --- a/src/mceditlib/minecraft_server.py +++ b/src/mceditlib/minecraft_server.py @@ -159,7 +159,7 @@ this way. self.versions.append(version) def jarfileForVersion(self, v): - return os.path.join(self.cacheDir, v, "minecraft_server.jar").encode(sys.getfilesystemencoding()) + return os.path.join(self.cacheDir, v, "minecraft_server.jar") def checksumForVersion(self, v): jf = self.jarfileForVersion(v) @@ -506,9 +506,6 @@ class MCServerChunkGenerator(object): level.saveChanges() def runServer(self, startingDir): - if isinstance(startingDir, unicode): - startingDir = startingDir.encode(sys.getfilesystemencoding()) - return self._runServer(startingDir, self.serverJarFile) lowMemory = False