python 的编码问题
老是碰到这个问题,决定好好给整理一番思路。
翻阅资料和实践证明,以下论述为真理:

可以通过:sys.setdefaultencoding统一为decode和encode指定编码。默认情况下也是统一采用相同的方式decode和encode。
粗看有点脱裤子放屁的嫌疑:
假设我们的编码是gb2312,那么先转成unicode(decode过程)
然后再次转成gb2312(encode过程)。
实则不然,这是一个完全的设计,可以支持将某种编码: 外星编码 ---(decode)---->python能够识别的编码-----(encode)---->人类能够识别的编码
很多函数也支持在处理时指定编码,比如 simplejson的dumps函数,有个参数 enable_ascii (是否有ascii码进行decode、encode)
默认情况下,我们在py文件的头部统一指定编码,像下面这样:
# -*- coding:utf-8 -*-
然后有些时候,(比如在windows平台中文环境下),得到的编码如果不是utf-8编码,这个时候用python处理字符串,首先它会用utf-8进行decode,若字符串不是unicode码,那么就会报错。
那么,我们可能会想到,直接给你decode好, str.decode('已经的某种编码') ,
好吧,这样可以,但在接下来encode时会报错,因为默认会按照 utf-8进行encode。而且这个过程可能你控制不了,比如通过find进行查找。人家没提供参数给你设定encode时的编码。
这个时候解决方法有两个:
1. 将文件头默认的coding改成已知编码
# -*- coding:已知编码 -*-
注意,这种方式下的非英文字符,如果前面加了u,则表示unicode码,即python的内部编码,可能无法激活转码机制(不太确定)。
2. 采用sys.setdefaultencoding强行加载编码
import sys
reload(sys)
sys.setdefaultencoding(已知编码)
python 的编码问题的更多相关文章
- python Unicode 编码解码
1 #将Unicode转换成普通的Python字符串:"编码(encode)" 2 unicodestring = u"Hello world" 3 utf8s ...
- python的编码问题
本文简单介绍了各种常用的字符编码的特点,并介绍了在python2.x中如何与编码问题作战 :) 请注意本文关于Python的内容仅适用于2.x,3.x中str和unicode有翻天覆地的变化,请查阅其 ...
- python 字符编码练习
通过下面的练习,加深对python字符编码的认识 # \x00 - \xff 256个字符 >>> a = range(256)>>> b = bytes(a) # ...
- Python 字符编码 zz
http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 1. 字符编码简介 1.1. ASCII ASCII(American Stan ...
- python 之编码问题详解
前在一个项目中遇到用post提交一个xml,xml中含有中文,对于单独的py文件,使用urllib2.urlopen完全ok,但在django中使用就一直报编码错误,然后在网上看到这篇文章不错,决定m ...
- 19.python的编码问题
在正式说明之前,先给大家一个参考资料:戳这里 文章的内容参考了这篇资料,并加以总结,为了避免我总结的不够完善,或者说出现什么错误的地方,有疑问的地方大家可以看看上面那篇文章. 以下说明是针对于pyth ...
- Python字符编码详解
1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...
- python的编码
python的编码 1.概述 讲述编码,那么就要涉及到几个方面,包括系统中如何来显示字符,文件中如何来保存字符. 1.1 系统环境 在系统中显示字符,那么就必须要考虑到系统中使用的编码格式. 在lin ...
- 【转】Python字符编码详解
转自:http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 1. 字符编码简介 1.1. ASCII ASCII(American S ...
- python与编码
Python中的文字对象 Python 3.x中处理文字的对象有str, bytes, bytearray. bytes和bytearray可以使用除了用作格式化的方法(format, format_ ...
随机推荐
- 用wcf实现带有“秒传”功能的网盘
写在前面 前面记录过这样一个关于“秒传”的实现思路,在这篇就弄了一个简单的demo实现了一下,当中有很多业务仍没考虑,只是将“秒传”的实现思路,用代码实现了一下. 关于秒传,可以参考这篇文章:何为“秒 ...
- Bootstrap3.0学习第九轮(CSS补充)
详情请查看http://aehyok.com/Blog/Detail/15.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...
- mysql-分页查询方案
一.直接使用limit最简单查询方法: , 在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引. 随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似: , 言 ...
- HashMap和Hashtable及HashSet的区别
相关文章1:HashSet,TreeSet和LinkedHashSet的区别 相关文章2:HashSet和TreeSet的区别 Hashtable类 Hashtable继承Map接口,实现一个 ...
- Java编程思想学习(十三) java I/O
Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节.JavaIO中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据 ...
- BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)
数论神题了吧算是 1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1573 Solved: 650 [Submit ...
- spring获取ApplicationContext对象的方法——ApplicationContextAware
一. 引言 工作之余,在看一下当年学的spring时,感觉我们以前都是通过get~ set~方法去取spring的Ioc取bean,今天就想能不能换种模型呢?因为我们在整合s2sh时,也许有那么一天就 ...
- POJ1089 Intervals
Description There is given the series of n closed intervals [ai; bi], where i=1,2,...,n. The sum of ...
- AppStore占坑注意事项
AppStore占坑注意事项 我们会提前在AppStore(iTunesConnect)里注册一些应用名称,以满足未来业务需要和防止恶意注册,其中有一些需要注意的事情,整理如下: 倒计时180天 为了 ...
- 统计网站访问量,以GD2库图像形式输出
index.php页面<?php session_start(); if($_SESSION[temp]==""){ //判断$_SESSION[temp]=="& ...