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')))
这样就没问题了。