Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1690406
  • 博文数量: 410
  • 博客积分: 9563
  • 博客等级: 中将
  • 技术积分: 4517
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-03 19:59
个人简介

文章分类

全部博文(410)

文章存档

2017年(6)

2016年(1)

2015年(3)

2014年(4)

2013年(32)

2012年(45)

2011年(179)

2010年(140)

分类: Python/Ruby

2011-02-12 13:38:54

今天碰到一个python的unicode问题,一直以来遵循读进来就转成unicode,写出去用utf-8编码,内部变量赋值都是unicode,基本不存在编码的问题。
今天用wx.DirDialog控件,取文件目录,结果碰到中文目录就有问题,结果发现返回的是unicode字符串,但内部编码却不是,是str的编码,很奇怪,查了一下,也没有其他人碰到类似的问题,用了一个hacker的方法
(最终发现是我的vim的问题,在终端下面程序没有问题,为方便在vim中调试,代码写成这样)
  1. def OnPickDir(self, evt):
  2.         '''
  3.         选择文件目录添加影片
  4.         '''
  5.         dlg = wx.DirDialog(self, u"请选择影片所在目录",
  6.                           style=wx.DD_DEFAULT_STYLE
  7.                            | wx.DD_DIR_MUST_EXIST
  8.                            )
  9.         if dlg.ShowModal() == wx.ID_OK:
  10.             ml = movielist.Mlist(u'templist.xml')
  11.             if sys.getfilesystemencoding() != u'UTF-8':
  12.                 #wxpython默认在vim下面无法正常得到有效unicode编码,
  13.                 #为方便调试,需要进行转换
  14.                 tmppath=repr(dlg.GetPath())[1:]
  15.                 exec 'tmppath='+ tmppath
  16.                 path=tmppath.decode('utf-8')
  17.             else:
  18.                 path=dlg.GetPath()

  19.             ml.makebaselist(path)
  20.             ml.savefile(u'templist.xml')
  21.             self.gridnew.GetTable().ReloadData(u'templist.xml')
  22.             self.gridnew.AutoSizeColumns()
  23.         dlg.Destroy()

阅读(1458) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~