易截截图软件、单文件、免安装、纯绿色、仅160KB

话说Python(三)万恶的编码

万恶的编码
小菜对于老师上一节讲的不是很明白,因为没有一本书是将文件与web一起讲授的,他决定自己探究一下它们之间的不同:
首先,小菜在C盘建了一个文本文档 file.txt,输入四个字:我是小菜。
然后,小菜在shell中练习起来:
>>> file=open("c:\\file.txt","r")
>>> data=file.read()
>>> print(data)
我是小菜
>>>

小菜有了成就感,接着试一试这个:
>>> import urllib.request
>>> page=urllib.request.urlopen("http://www.baidu.com")
>>> data=page.read()
>>> print(data)
b'<!doctype html><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>\xb0\xd9\xb6\xc8\xd2\xbb\xcf\xc2\xa3\xac\xc4\xe3\xbe\xcd\xd6\xaa\xb5\xc0
#在这里为了节约篇幅我省略了后面内容

“不对啊,这些反斜杠是啥啊!汉字咋没了?”小菜对于这种蔑视汉语的行为非常愤慨,“怪不得中国人编程不行了,连汉字都要折腾半天。”
第二天一上课,小菜跑到老师跟前,抱怨起来:“文件和网络读取的结果不一样啊!一个正常,一个不显示汉字。”
大牛老师笑着说:“这不能怪你,是我没有讲清楚。”
Python 3.x 与Python 2.x的不同点之一就是Python3k引入了bytes对象,刚才小菜在file中得到的是string(字符串),而在url中得到的是bytes(字节)。在最后的输出里,前面有一个b,指的就是bytes。其实,如果open采用“b”模式的时候,得到的也是bytes,将字节转化就要学到今天的内容:编码。
Python3k中采用两个函数完成这个工作:encode()和decode()。
顾名思义:encode()是进行编码的,将字符串编码成想要的编码格式。
decode()是进行解码的,将编码的字节解码为字符串。
常用的编码格式有ASCII、unicode、UTF-8、big5、gbk、gb2312等,ascii用于北美字符,utf-8、unicode是国际标准,big5是中文繁体,gbk、gb2312是简体中文。
小菜的web数据是gb2312编码的,可以在后面写
>>> content=data.decode('gb2312')
>>> print(content)
<!doctype html><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>百度一下,你就知道 </title>


相关文档:

初始化函数中的虚函数调用( C++ vs python )

代码+结果,不做解释
当然,对于python没有virtual function一说,估计当作对比一个例子看看吧。
#include <iostream>
using namespace std;
class base
{
public:
virtual void foo() { cout << "base" << endl; }
base() { foo() ;}
};
class derive: public base
{
pub ......

python中编码转换

当python中间处理非ASCII编码时,经常会出现如下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
0x??是超出128的数字,python在默认的情况下认为语言的编码是ascii编码,所以无法处理其他编码,需要设置python的默认编码为所需要的编码。
一个解决的方案是 ......

windows & python & Emacs


设置Emacs的HOME,可以在scratch buffer中输入:(insert (getenv "HOME"))查看
下载python-mode.el
用Emacs打开python-mode.el然后M-x byte-compile-file编译python-mode.el为elc
C-h v查看load-path变量
在HOME/.emacs.d/init.el中添加(setq load-path (cons "D:\\emacs-23.1-bin-i386" load-path))
将py文件与pytho ......

Python 下载网页的几种方法

总结下,Python 下载网页的几种方法
1
 fd = urllib2.urlopen(url_link)
 data = fd.read()
 这是最简洁的一种,当然也是Get的方法
2
通过GET的方法
def GetHtmlSource(url):
    try:
   
        htmSource = ''
 &nb ......

Python中reactor,factory,protocol的学习笔记


Python中reactor,factory,protocol的学习笔记
 
 
最为简单的情况下,除了了解清reactor的简单使用,你还要了解Protocol和Factory。它们最终都会由reactor的侦听建立和run来统一调度起来。    
   
     建立服务器的第一个要解决的问题就是服务与外界的交流协 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号