我有在內存中的以下路徑:我想用它作爲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