Unicode支持多种编码格式,这为程序员带来了额外的负担,每当你向一个文件写入字符串的时候,你必须定义一个编码用于把对应的Unicode内容转换成你定义的格式,Python通过Unicode字符串的encode()函数解决了这个问题,该函数接受字符串中的字符为参数,输出你指定的编码格式的内容。

所以,每次我们写一个Unicode字符串到磁盘上我们都要用指定的编码器给他“编码“一下,相应地,当我们从这个文件读取数据时,我们必须”解码”该文件,使之成为Unicode字符串对象。

简单的例子:

下面的代码创建了一个Unicode字符串,用UTF-8编码器将它编码,然后写入到一个文件中去,接着把数据从文件中读回来,解码成Unicode字符串对象,最后,打印出Unicode字符串,用以确认程序正确地运行。

在Linux中编写,在VIM中输入如下代码,保存为uniFile.py  #

/home/xiaopeng/python/code/uniFile.py

'''

An example of reading and writing Unicode strings:Writes

a Unicode string to a file in utf-8 and reads it back in

'''

CODEC = 'utf-8' 编码方式

FILE = 'unicode.txt' 要存的文件名

hello_out = u"Hello world\n" 创建了一个Unicode格式的字符串

bytes_out = hello_out.encode(CODEC) 用UTF-8编码

f = open(FILE,'w')

f.write(bytes_out) 写入指定文件中

f.close()

f = open(FILE,'r')

bytes_in = f.read() 读取

f.close()

hello_in = bytes_in.decode(CODEC) 解码

print hello_in 打印

在终端中输入:python uniFile.py

结果打印出 Hello world

然后我们在python目录下会发现多了一个名为unicode.txt的文件,用cat命令查看一下,发现里面的内容和打印的结果一样.

把Unicode应用到实际中注意一下四点:

1 程序中出现字符串时一定要加一个前缀u

2 不要用str()函数,用Unicode()代替

3 不要用过时的string模块。如果传给它非ASCII码,它会把一切搞砸。

4 不到必须时不要在你的程序里编解码Unicode字符,只在你要写入文件或者数据库或者网络时,才调用encode()函数和decode()函数。

python的unicode_python的unicode及其编码解码相关推荐

  1. Python 图片数据MYSQL存取(BASE64编码解码)

    Python 图片数据MYSQL存取(BASE64编码解码) 1.相关python代码 #-*- coding:utf-8 -*-import pymysql import sys import ba ...

  2. python进制转换,unicode,ascii编码转换

    一.各进制的字符串转10进制~ int('字符串',2[16|8]) #可以把进制形式的字符串按照2进制|16进制|8进制的方式转成10进制 例: int('79',16) 121int('01010 ...

  3. python 小数据池 is和 == 编码解码

    ########################总结######################### 今日主要内容 1. 小数据池, id() 小数据池针对的是: int, str, bool 在p ...

  4. Python爬虫:js的btoa和atob和pythonBase64编码解码比对分析

    比对js和py的Base64编码解码,探求一个共通之处 javascript代码 对英文字符进行base64编码解码 var str = 'javascript';// 编码 btoa(str) // ...

  5. 字符编码在python中的处理_python 字符编码处理问题总结

    Python中常常遇到这种字符编码问题,尤其在处理网页源代码时(特别是爬虫中): UnicodeDecodeError: 'XXX' codec can't decode bytes in posit ...

  6. 字符编码在python中的处理_Python 字符编码处理总结

    Python中经常遇到这样那样的字符编码问题,尤其在处理网页源码时(特别是爬虫中): UnicodeDecodeError: 'XXX' codec can't decode bytes in pos ...

  7. GSM手机SMS编码解码

    有两种方式,一有短信网关,二是通过SMS的DTE-DCE接口标准(AT命令集).我们来讨论一下At命令发送短信,下面是在Siemens M75验证. 一共有三种方式来发送和接收SMS信息:Block ...

  8. python文件操作解码_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  9. python 字符串 编码 解码_Python 字符串编解码研究

    Python 2.X 在输入汉字和特殊字符的时候,经常遇到编码解码的问题,究其原因,编译器默认将文件当做ascii编码,因此要正确的实现编解码的转换,需要进行一些设置. 首先让我们来了解几个概念. 文 ...

最新文章

  1. Javascript中undefined,NaN等特殊比较
  2. AI一分钟 |“最抢手”毕业生排名出炉:清华没进前三?支付宝将支持iPhone X刷脸
  3. virtualbox mac-debian共享文件夹
  4. Linux centos7防火墙firewalld相关操作
  5. leetcode881. 救生艇(贪心算法加双指针)
  6. bind blz mysql_MySQ DBAL重点剖析课程 企业级MySQL系统安全与DBA运维日常事务管理 运维DBA必备宝典...
  7. 使用JSSDK分享页面
  8. bash 将二进制转换为十进制_用‘栈的思想编写一个十进制转换二进制、八进制或十六进制的程序...
  9. C# .NET与数据结构
  10. java 如何查看jdk版本位数
  11. JAVA读写之前,先进行一下可读,可写权限判断
  12. Could not get unknown property 'packageForR' for task ':app:processDebugReso
  13. 从零学会SQL:入门(实操演示)
  14. querydsl动态 sql_SpringDataJPA学习记录(四)--使用QueryDSL
  15. 简报 | 解决“无感停车”开票难题, 广州试水区块链停车发票
  16. Oracle,Sql,procedure 感觉自己写的很棒的一个存储过程
  17. 让电脑使用手机的摄像头做直播
  18. 几款笔记软件的优缺点
  19. 命运更喜欢将丰硕约果实馈赠给那些含着泪微笑的灵魂
  20. 博弈论(Nim游戏、有向图游戏之SG函数)

热门文章

  1. Shell终端快捷键总结(mac)
  2. 12 信息2班 《基于Android的软件开发》课程成绩
  3. 第三篇:属性_第二节:控件属性在页面及源码中的表示方式
  4. UVA 10534 - Wavio Sequence
  5. Unix调试工具dbx使用方法
  6. C# 用数据库记录填充树
  7. PlayFramework入门教程
  8. python class属性
  9. 脑与认知科学2 脑神经电生理学下
  10. VC++连接Mysql