我正在编写一个小应用程序,它将文件路径保存到数据库中(使用django)。我假设文件路径是utf-8编码的,但我遇到了以下文件名:C:\FXG™.nfo
,显然没有用utf-8编码。
当我filepath.decode('utf-8')
时,我收到以下错误:
UnicodeDecodeError:
'utf8'编解码器无法解码位置30中的字节0x99
:无效的起始字节
(我修剪了文件名,所以这里的位置是错误的。)
我如何知道文件路径的编码方式是否适用于每个文件名?
答案 0 :(得分:1)
使用sys.getfilesystemencoding()
。
这应该允许您转换所有看起来正常的路径。
但是,总会存在非法编码的文件或文件夹,您必须考虑如何处理应用程序框架中的文件或文件夹。
有些应用可能会忽略此类文件,有些应用会将名称保留为二进制blob。