首页 > 编程语言 >python 中文路径带来的错误和解决

python 中文路径带来的错误和解决

时间:2022-11-23 19:38:33浏览次数:47  
标签:中文 basedir python self 路径 path wx os icon


        

basedir = os.path.dirname(os.path.realpath(sys.argv[0]))

self.icon = wx.Icon(basedir+'\\icon.ico',wx.BITMAP_TYPE_ICO)

self.SetIcon(self.icon)

运行就报错,

    self.icon = wx.Icon(basedir+'\\icon.ico',wx.BITMAP_TYPE_ICO)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xbf in position 5: invalid s
tart byte

判断应应该和,路径中有中文有关系,把路径改为全英文,就没有问题了。

但这不是最终的解决办法,如此发布的程序在中文目录下面就用不了了。

经过对字符编码的多翻偿试,大致明白是什么原因了。 因为中文路径名,从argv 里取出的时候

采用的是GBK编码方式(和系统有关系及文件编码有关系), 而python 的字符运算,都会默认转换成unicoce来运算的,

默认情况下采用utf8的方式解码,但此路径采用的是gbk编吗的,在转码过程中不能有效转码。

这种情况就需要我们指定转码的编码方式。所以代码修改一下:

basedir = os.path.dirname(os.path.realpath(sys.argv[0].decode('gbk')))


这样就没问题了。

标签:中文,basedir,python,self,路径,path,wx,os,icon
From: https://blog.51cto.com/fangkailove/5881703

相关文章