2012年11月28日星期三

python: 转换被错误定义为unicode类型的utf-8编码

某同事的代码中发现,本来是utf-8编码的字符串,从数据库读出来后,被错误返回为u'utf-8内码'这样的格式。

下面是一个简单的转换方法,还原其为正常的utf-8编码:

>>> a = '测试'
>>> a
'\xb2\xe2\xca\xd4'
>>> b = a.decode('gbk').encode('utf-8')
>>> b
'\xe6\xb5\x8b\xe8\xaf\x95'
>>> c = u'\xe6\xb5\x8b\xe8\xaf\x95'
>>> c
u'\xe6\xb5\x8b\xe8\xaf\x95'
>>> arr = array.array('B')
>>> arr.fromlist([ord(i) for i in c])
>>> print arr.tostring().decode('utf-8').encode('gbk')
测试 

最终的代码是这样:
import string
import array
s = u' \xe6\xb5\x8b\xe8\xaf\x95 '
arr = array.array('B')
arr.fromlist([ord(i) for i in s])
print arr.tostring().decode('utf-8').encode('gbk')

如果读者知道更好的转换方法,希望不吝赐教。

2012年11月27日星期二

安装python图标库pycha搞得很郁闷

根据帖子推荐,发现pycha是所有python图标库中比较简单的,于是打算采用这个。
结果,安装这个库花了我两个半天,仍未能解决,打算放弃。

1. 首先在pycha的首页https://bitbucket.org/lgs/pycha/wiki/Home找下载地址。
   找了半天居然没有,只有个项目管理软件hg的地址。
   好吧,先安装windows下的hg客户端。
2. 安装hg客户端:
  http://cdn.bitbucket.org/tortoisehg/files/downloads/tortoisehg-2.6.0-hg-2.4-x86.msi
3. 使用hg下载源码:
  hg clone http://bitbucket.org/lgs/pycha
4. 安装上了没效果,原来还需要库 cairo。于是下载cairo
  http://www.cairographics.org/releases/py2cairo-1.10.0.tar.bz2
5. cairo库不同于一般python库的安装,居然还需要python的头文件,于是再下载python源码包来编译:
    http://www.python.org/ftp/python/2.7/Python-2.7.tgz
6. 再编译cairo,指定头文件的路径,仍然编译不通过……

选择一个不成熟的库,果然很折腾啊!





2012年11月26日星期一

评《技术含量的问题》

原帖请见:http://www.dbanotes.net/review/Tech_Simple.html

不是很赞同冯大辉的观点。

    不重视技术问题,因技术的成本高转而采用人工;或者是技术成熟度没达到人工水准,继续采用人工——这些只能在一个特定的阶段来使用。
    比如,公司刚刚成立,还处理生存的压力下,无可厚非。
    而对于一个已经起步的公司,这样做无疑饮鸩止渴:

1. 这是技术债务,总有一天要还的。
   借来的钱一开始用得很爽,等到要还债的时候,就会变得痛苦。

2. 某技术当前阶段的发展不如人工,但不代表它永远都无法超越人工的水平。
   现在不去积累,失去了先机,放弃了成为技术壁垒的决心……等到它成熟的时候,你已经再也没机会去捡起来了。

3. 廉价的人力资源也是资源,随着环境的变化,它慢慢也会成为稀缺资源。
   当前珠三角的用工荒,已经说明了这个问题。

  因此,特别是大公司,应该在某些技术领域投入资源去进行攻关。如果总是以为没技术含量的手段也能解决问题,技术债务总有一天会令它头破血淋。