python 13 字符编码
转自 http://www.cnblogs.com/BeginMan/p/3166363.html
一、字符编码中ASCII、Unicode和UTF-8的区别
点击阅读:http://www.cnblogs.com/kingstarspe/p/ASCII.html
再推荐一篇相关博文:http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html
二、Unicode与ASCII
Python能处理Unicode和ASCII编码,为了让这两者看起来尽可能的相似,Python字符串从原来简单的类型改成了真正的对象。ASCII字符串成了StringType、Unicode字符串成了UnicodeType。使用如下:
>>> "hello world" #ASCII string
'hello world'
>>> u"hello world" #Unicode string
u'hello world'
>>>
1、str()、chr()只能以0~255作为参数,也即是说只处理ASCII字符串。如果有Unicode字符串,则会先自动转换成ASCII的然后在传入这些函数中。
原因:Unicode支持的字符多,如果在str()、chr()中有ASCII不存在的字符,则会发生异常。
2、unicode()、unichar()可以看做是Unicode版本的str()和chr()。
>>> unicode('hello world')
u'hello world'
三、编码与解码
它们解决的问题就是编码(encode())、解码(decode())问题,不至于出现乱码。
Codec表示编码方式。

""" 把一个Unicode字符串写入到磁盘文件,然后再把它读出并显示;
写入的时候用UTF-8,读也一样用UTF-8。""" CODEC = 'utf-8'
FILE = 'demo.txt' strIn = u'BeginMan will be a great coder'
byte_strIn = strIn.encode(CODEC) #以uft-8进行编码
f = open(FILE,'w')
f.write(byte_strIn)
f.close() f = open(FILE,'r')
str = f.read()
f.close()
str_out = str.decode(CODEC) #以utf-8进行解码
print str_out #输出:BeginMan will be a great coder

注意:
1、程序中出现字符串时一定要在前面加上前缀u
s= '博客园Cnblog' #不要这样写,这样容易乱码如:鍗氬鍥瑿nblog
s = u'博客园Cnblog'#正确
2、不要使用str()函数,尽量用unicode()代替
3、不要使用过时的string 模块
4、没必要在程序中编码或解码unicode字符串,编码解码一般用于操作文件、数据库、网络等才使用。
5、字符串格式化

>>> '%s %s' %('Begin','man')
'Begin man'
#还记得上次的关于字符串的博客中说到的:“普通字符串与unicode字符串能转换成unicode字符串”
>>> u'%s %s' %(u'Begin',u'Man')
u'Begin Man'
>>> u'%s %s' %('Begin','Man')
u'Begin Man'
>>> '%s %s' %(u'Begin','man')
u'Begin man'
>>> '%s %s' %('Begin',u'man')
u'Begin man'
python 13 字符编码的更多相关文章
- Python基础-字符编码与转码
***了解计算机的底层原理*** Python全栈开发之Python基础-字符编码与转码 需知: 1.在python2默认编码是ASCII, python3里默认是utf-8 2.unicode 分为 ...
- Python的字符编码
Python的字符编码 1. Python字符编码简介 1. 1 ASCII Python解释器在加载.py文件的代码时,会对内容进行编码,一般默认为ASCII码.ASCII(American St ...
- Python常用字符编码(转)
Python常用字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Code for Information Interchange,美国信息交 ...
- Python常见字符编码间的转换
主要内容: 1.Unicode 和 UTF-8的爱恨纠葛 2.字符在硬盘上的存储 3.编码的转换 4.验证编码是否转换正确 5.Python bytes类型 前 ...
- python 3字符编码
python 3字符编码 官方链接:http://legacy.python.org/dev/peps/pep-0263/ 在Python2中默认是ascii编码,Python3是utf-8编码 在p ...
- Python 的字符编码
配置: Python 2.7 + Sublime Text 2 + OS X 10.10 本文意在理清各种编码的关系并以此解决 Python 中的编码问题. 1 编码基本概念 只有先了解字符表.编码字 ...
- 转:Python常见字符编码及其之间的转换
参考:Python常见字符编码 + Python常见字符编码间的转换 一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Cod ...
- 《转》Python学习(13)-Python的字符编码
转自 http://www.cnblogs.com/BeginMan/p/3166363.html 一.字符编码中ASCII.Unicode和UTF-8的区别 点击阅读:http://www.cnbl ...
- Python:字符编码详解
相关文章 Python中文编码问题:为何在控制台下输出中文会乱码及其原理 1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Informati ...
随机推荐
- 关于performSelector调用和直接调用区别
下面两段代码都在主线程中运行,我们在看别人代码时会发现有时会直接调用,有时会利用performSelector调用,今天看到有人在问这个问题,我便做一下总结, [delegate imageDownl ...
- JSP自定义标签(转)
1. TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport, ...
- eclipse的快捷键(常用)
ctrl+shift+r 全局查找java类 ctrl +h 全局查找包含某某内容的文件位置 ctrl +alt+h 右击方法名 选择open call hierarchy
- MarkDown 快速开始 基础教学
# MarkDown 快速上手 # > [源代码](https://www.cnblogs.com/qiyuexin/p/9932941.html) > by qyx@2018/11/07 ...
- C#基础-->cookie和session
关于cookie和session cookie 1:一个cookie中可以存放的数据最大在4KB左右 2:cookie存放于客户端 3:cookie分为两种 一种是会话cookie 一种是持久co ...
- 剑指offer——03二维数组中的查找
题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不 ...
- JAR API
JAR API包括使用 manifest 文件的类.Manifest类的一个对象表示一个manifest文件. 在代码中创建一个Manifest对象,如下所示: 1 Manifest manifest ...
- SpringMVC前后端参数交互
Controller中使用JSON方式有多种 关键在于ajax请求是将数据以什么形式传递到后台 HTTP请求中: 如果是get请求,那么表单参数以name=value&name1=value1 ...
- 22-1-sort
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- shell脚本输出九九乘法表
#!/bin/bash#输出九九乘法表 for ((i=1;i<=9;i++)) do for ((j=1;j<=$i;j++)) do echo -n $j'x'$i=$(($i*$j) ...