我有在内存中的以下路径:我想用它作为CMD参数编码的Unicode路径打破它
video_path = u'C:\\Documents and Settings\\user\\My Documents\\Downloads\\\xf5iv - Neon Phoenix [Free DL].mp3'
,所以我必须要对其进行编码。
video_path = video_path.encode(sys.getfilesystemencoding())
cmd = 'ffmpeg -y -i "%s" -vn -ac 2 -f mp3 audio.mp3' % video_path
subprocess.Popen(cmd)
但字符串是不正确的方式编码 - 它转换\xf5
到?
而不是õ
。因此无法找到该文件。
这是怎么发生的?我正在使用默认的文件系统编码(即mbcs)。
Windows使用Unicode路径。你为什么编码你的Unicode字符串? – 2012-04-23 21:51:58
@André:它使用“Unicode”,而不是Unicode。 – 2012-04-23 21:54:53
现在我在猜测,但如果你将'video_path'作为一个unicode对象(不编码它),将'cmd = u'..'%videopath'作为一个Unicode来构造,然后在末尾进行编码会发生什么? '使用os.system(cmd.encode(sys.getfilesystemencoding()))'?在Linux和Python 2.7上它没有区别,但它可能值得您在平台上尝试。 – jogojapan 2012-04-25 06:14:05