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

        

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')))

这样就没问题了。

猜你喜欢

转载自blog.csdn.net/fangkailove/article/details/77035303