转自 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 字符编码的更多相关文章

  1. Python基础-字符编码与转码

    ***了解计算机的底层原理*** Python全栈开发之Python基础-字符编码与转码 需知: 1.在python2默认编码是ASCII, python3里默认是utf-8 2.unicode 分为 ...

  2. Python的字符编码

    Python的字符编码 1. Python字符编码简介 1. 1  ASCII Python解释器在加载.py文件的代码时,会对内容进行编码,一般默认为ASCII码.ASCII(American St ...

  3. Python常用字符编码(转)

    Python常用字符编码   字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Code for Information Interchange,美国信息交 ...

  4. Python常见字符编码间的转换

    主要内容:     1.Unicode 和 UTF-8的爱恨纠葛     2.字符在硬盘上的存储     3.编码的转换     4.验证编码是否转换正确     5.Python bytes类型 前 ...

  5. python 3字符编码

    python 3字符编码 官方链接:http://legacy.python.org/dev/peps/pep-0263/ 在Python2中默认是ascii编码,Python3是utf-8编码 在p ...

  6. Python 的字符编码

    配置: Python 2.7 + Sublime Text 2 + OS X 10.10 本文意在理清各种编码的关系并以此解决 Python 中的编码问题. 1 编码基本概念 只有先了解字符表.编码字 ...

  7. 转:Python常见字符编码及其之间的转换

    参考:Python常见字符编码 + Python常见字符编码间的转换 一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Cod ...

  8. 《转》Python学习(13)-Python的字符编码

    转自 http://www.cnblogs.com/BeginMan/p/3166363.html 一.字符编码中ASCII.Unicode和UTF-8的区别 点击阅读:http://www.cnbl ...

  9. Python:字符编码详解

    相关文章 Python中文编码问题:为何在控制台下输出中文会乱码及其原理 1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Informati ...

随机推荐

  1. 杂项-PPT:如何把幻灯片ppt转换成视频

    ylbtech-杂项-PPT:如何把幻灯片ppt转换成视频 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1. https://jingyan.baidu.co ...

  2. 19、javascript基础知识

    1.几天接到了一个奇葩的需求,就是在鼠标滚轮滑动的时候,div要悬浮不动,因此这引起了我对于javascript知识的复习 首先从最基础的变量的类型开始 <!DOCTYPE html> & ...

  3. mysql怎样更改密码和用户名

    mysql怎样更改密码和用户名 更改密码(老版本): mysql -u root -p Enter password:*** mysql>use mysql; --选择数据库-- Databas ...

  4. Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别  Pig

    Hadoop生态上几个技术的关系与区别:hive.pig.hbase 关系与区别 Pig 一种操作hadoop的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了.当初雅虎自己慢慢退出pig的 ...

  5. XML 扩展部分

    引入命名空间 xmlns DTD缺点 1.不支持命名空间 2.支持的数据类型很少 3.DTD不可扩展 4.DTD不遵循XML规范 DTD的优点 简洁 schema 通过schema来解决DTD的不足 ...

  6. kmalloc vs vmalloc

    kmalloc分配物理上连续的空间,可以不是整页大小的. vmalloc分配逻辑上连接的空间,可以不是物理上连接的.

  7. Comet OJ - Contest #4 B题 奇偶性

    题目链接:https://www.cometoj.com/contest/39/problem/B?problem_id=1577 题意:给你一个数列,求L 到 R 区间内 所有数列 (ƒn mod ...

  8. 剑指offer——60二叉树的深度

    题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.   题解: 简单的深度遍历即可.   class Solution ...

  9. 剑指offer——48把数字翻译成字符串

    题目要求: 给定一个数字,按照如下规则翻译成字符串:0翻译成“a”,1翻译成“b”...25翻译成“z”.一个数字有多种翻译可能,例如12258一共有5种,分别是bccfi,bwfi,bczi,mcf ...

  10. 前端(十五)—— JavaScript事件:绑定事件方式、事件的冒泡和默认事件、鼠标事件、键盘事件、表单 事件、文档事件、图片事件、页面事件

    JS事件:绑定事件方式.事件的冒泡和默认事件.鼠标事件.键盘事件.表单 事件.文档事件.图片事件.页面事件 一.事件的两种绑定方式 1.on事件绑定方式 document.onclick = func ...