urllib2.urlopen的中文URL问题

在url中使用中文其实是一个坏习惯,会带来一系列的转码问题, 我更喜欢英文译名或者id来标识某个uri。但是现实往往是残酷的, 特别是在我们调用别人服务时候,有时候被逼无奈使用中文URL。 Python中unicode转码一向是让人头疼的问题。数次碰壁之后,我也摸出了一些门道, 研读完Python字符串的encode与decode 之后,就自认为找到了万金油,谁知道这次又碰上这个老冤家。 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen return _opener.open(url, data, timeout) File "/usr/lib/python2.6/urllib2.py", line 391, in open response = self._open(req, data) File "/usr/lib/python2.6/urllib2.py", line 409, in _open '_open', req) File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain result = func(*args) File "/usr/lib/python2.6/urllib2.py", line 1170, in http_open return self.do_open(httplib.HTTPConnection, req) File "/usr/lib/python2.6/urllib2.py", line 1142, in do_open h.request(req.get_method(), req.get_selector(), req.data, headers) File "/usr/lib/python2.6/httplib.py", line 914, in request self._send_request(method, url, body, headers) File "/usr/lib/python2.6/httplib.py", line 951, in _send_request self.endheaders() File "/usr/lib/python2.6/httplib.py", line 908, in endheaders self._send_output() File "/usr/lib/python2.6/httplib.py", line 780, in _send_output self.send(msg) File "/usr/lib/python2.6/httplib.py", line 759, in send self.sock.sendall(str) File "<string>", line 1, in sendall UnicodeEncodeError: 'ascii' codec can't encode characters in position 7-8: ordinal not in range(128) 这次错误引发是在 urlopen() 引起的,很有特色,开始使用 url.encode('utf-8') 就可以解决了。 今天我做了一些测试。 ...

2011-06-14 · alswl

使用DDNS+SSH连通家庭/工作电脑

Thumbnail

1. 背景 我目前有两台电脑,一台是家里使用的Linux笔记本(Dell 6400,4年), 一台是公司使用的Windows笔记本(IBM X201,1个月)。 我有时候需要在办公室连入家庭电脑,进行一些操作,比如同步,比如使用linux特定服务。 完成这项工作需要两个条件,ip互通+对应通讯协议。被连接的服务器需要一个公网地址, 而非局域网的192.x.x.x。可供选择的协议比较多,http/ftp/ssh等常规协议都可以使用。 ...

2011-06-12 · alswl

一个mako.vim

给Vim找了一个Mako的语法高亮,发现着色居然有问题。查看更新记录后发现作者Armin Ronacher只更新到08年9月份。之后Mako更新了一些少许细节,我修改了一下mako.vim,放在这里供下载。 其实我只改了57/58行,增加一个block语法。 点击这里下载:mako.vim 使用方法,放入vimfiles/syntax 相关链接: 原始mako.vim:http://www.vim.org/scripts/script.php?script_id=1858 另外一个mako.vim是缩进用的,放入vimfiles/syntax:http://www.vim.org/scripts/script.php?script_id=2663 ps:Mako是一个Python下面的Template框架。 ...

2011-06-09 · alswl

Eclipse中运行Pylons

Thumbnail

官方中pylons都是通过在shell中运行paster serve –reload development.ini来运行应用实例。而整天在任务栏跑着一个黑乎乎的shell很碍眼,通过一下步骤可以在Eclipse中运行pylons。 配置Run Configuration - Python Run如下。 Main页签中Main Module指向paster-script.py,可以使用绝对路径。 配置Arguments页签的参数,添加serve –reload development.ini,后面的ini配置文件可以使用绝对路径。 ...

2011-05-16 · alswl

Pylons使用小记

Thumbnail

活着就是折腾,最近事情多的一塌糊涂,烦躁的很,导致log4d也荒废一个月了。今天趁着周五晚上,梳理一下最近学习的pylons知识。 关于Pylons Pylons是一个用pythons写的web框架,优点是配置灵活,默认使用[Mako](http: //www.makotemplates.org/)作为Template,SQLAlchemy作为 ORM映射。使用BSD作为授权协议。 托WSGI的福,python的web框架超多,甚至高手5分钟可以自己手写一个web框架,这种情况也导致了Python web框架的纷杂。我这里选择Pylons(其实是被选择),并不是说Pylons一定最好,而是比较适合当前项目。更多的Python web框架对比建议看这篇[浅谈Python web框架](http://feilong.me/2011/01/talk-about-python-web- framework),另外,这个Best Web- Framework有直观的对比。 ...

2011-05-16 · alswl

ERP叛逃者

大四实习时候,跑去驻厂开发,当时主管跟我说"我们做的是企业信息化软件"。毕业之后找工作,进入一家国内还算有名的ERP公司,做ERPII产品(CRM/工作流/ 电子商务平台等ERP软件附属产品)的开发和二次开发。 在这一年半的时间里,我学习了一些行业知识,熟悉了公司自己的开发模式、框架和工具。浑浑噩噩的直到某一天,我发现我写代码没有键盘飞扬的感觉。我惶恐,我感觉我遇到 瓶颈停止成长了。我开始思索我这种状况的产生,我重新翻开曾经看的糊里糊涂的《人月神话》,研读阿朱的《走出软件作坊》,尝试找到问题和解决办法。 ...

2011-04-25 · alswl

Ubuntu安装之后设定操作

前几天使用chmod时候,多打了一个/,导致根目录下面所有文件权限设定出了问题,额~重装系统吧,正好把装系统之后的配置过程记录下来。 这些都是我操作过的命令,确切可靠,适用于Ubuntu 10.10 Desktop Edtion。 = init Linux programs and setting = :author: alswl :email: alswlx#gmail.com :toc: :numbered: == first of all == .update (打补丁、升级) sudo apt-get update Update System(fix bugs for sercurity): 299.0MB .reset permission(谨慎使用,设定文件为644,设定文件夹为755) find /home/XXX -type d -exec chmod 755 {} ; find /home/XXX -type f -exec chmod 644 {} ; .nautilus (给鹦鹉螺加上open as administrator, open terminal) ...

2011-04-07 · alswl

Maven 下 Jetty 启动

Thumbnail

部门最近开发的产品使用的开发服务器是 Jetty(挂载在 GWT 中),启动方法是通过 Eclipse 的 External Tool 执行。我对此表示很好奇,特意在自己电脑下面组建了一个 Jetty 开发环境,发现 Maven 和 Jetty 合作起来非常愉快,现在小记之。 准备 Maven 配置文件 我使用 Maven 推荐的标准 webapp 结构,结构如下,官方文档可以参考 Maven - Introduction to the Standard Directory Layout src/main/java Application/Library sources src/main/resources Application/Library resources src/main/filters Resource filter files src/main/assembly Assembly descriptors src/main/config Configuration files src/main/webapp Web application sources src/test/java Test sources src/test/resources Test resources src/test/filters Test resource filter files src/site Site LICENSE.txt Project’s license NOTICE.txt Notices and attributions required by libraries that the project depends on README.txt Project’s readme 使用的 pom.xml 主要添加了 build- plugins 的 Jetty 插件,另外修改了 outputDirectory,从而实现自动编译到targert/projectName/WEB- INF/classes目录,实现 Eclipse Hot Code。 ...

2011-04-04 · alswl

Ubuntu桌面自动换背景

Thumbnail

GNOME桌面系统可以使用一系列的图片作为背景,每过一段时间能够自动更换。这个功能核Win7下面自动换背景效果一致。不过很可惜,系统自带的可自动更换图片集只 有几张,也找不到什么按钮可以直接设定。 下图就是系统自带的两个图片集(第二行第一组和第二组)。 我们可以通过撰写xml自己制作图片集,xml格式模板在/usr/share/gnome-background-properties/cosmos.xml ,实际的xml存放在类似于/usr/share/backgrounds/cosmos/background-1.xml的配置文档里面。 ...

2011-04-03 · alswl

历史记录-歌词复制器

Thumbnail

之前写过一个Java的小工具叫做Mp3Lrc歌词复制器,用来复制歌词到Mp3播放器中的对应目录下面。之前的文章参见[Mp3Lrc的可执行文件](http://log4d.com/2009/05/the-executable-file- mp3lrc)和[Java写的Mp3歌词复制器](http://log4d.com/2009/05/lyrics-written-in-java- replicator-mp3)。 这几天整理硬盘时候发现大四时候还用Delphi写了一个完整的GUI界面的Mp3歌词复制工具叫做PLrcMatch4D。 源码已经丢失,只剩下可执行文件,T_T。 如果非要定义以下这个工具的作用,就是从某个固定文件夹(歌词文件夹)复制对应Mp3播放器中歌曲的lrc文件到目标文件夹,从而让Mp3播放器可以正常显示歌词。 ...

2011-03-29 · alswl