码迷,mamicode.com
首页 > 其他好文 > 详细

字符串编码问题

时间:2014-12-26 12:45:38      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

python编码问题

字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

  • decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312‘),表示将gb2312编码的字符串str1转换成unicode编码。

  • encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘gb2312‘),表示将unicode编码的字符串str2转换成gb2312编码。

因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码代码中字符串的默认编码与代码文件本身的编码一致。
下面例子困扰很久,在做一个爬虫某网站的例子。一般网页编码是utf-8,windows终端是gbk?

  1. if platform.system()=="Windows":
  2. kw = raw_input("请输入关键字(多个关键字请以空格隔开):".decode("utf-8").encode("gbk"))
  3. kw = kw.decode("gbk").encode("utf-8")

注意:kw为中文的输入关键字的话,是要提交至你要爬的网页,所以要转换成utf-8编码;上面先将已经是gbk编码的kwdecode成Python内部unicode编码,然后再将unicode编码encode成网页utf-8编码的字符串。

字符编码知识梳理

UTF-8就是在互联网上使用最广的一种Unicode的实现方式

  • UTF-8的编码规则

    1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
    2) 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

综上:解读UTF-8编码非常简单。如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。



 



字符串编码问题

标签:

原文地址:http://www.cnblogs.com/ixiaole/p/4186347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!