Python序列——Unicode
1. Unicode是什么
Unicode是对字符进行编码的一种标准。而utf8或者utf-8是根据Unicode的标准实现的一种存储方式。
2. Python中的Unicode
>>> u'furzoom' # <--- Unicode string
u'furzoom'
>>> 'furzoom' # <--- ascii string
'furzoom'
>>> '在'
'\xe5\x9c\xa8'
>>> '在'.decode('utf8')
u'\u5728'
>>> '在'.decode('utf8').encode('utf8')
'\xe5\x9c\xa8'
3. 编码与解码
目前一般都建议在编程Python脚本时采用UTF-8的编码形式,这个指的文件的编码形式。Python内部是采用Unicode表示的。在Python中写下一行u'furzoom',它是Unicode字符串。如果是'furzoom',它的编码方式与该脚本文件的编码方式是一致的。如果要把该字符串存储到文件中,期望其他程序能够正确的解决字符串,该怎么办呢?
如果是Unicode字符串,需要指定用什么样的编码方式来编码字符串,通过的做法是采用UTF-8的方式。同时从文件中读取时,就是一个逆向的过程。看下面的例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
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 Furzoom\n'
bytes_out = hello_out.encode(CODEC)
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
4. 在应用中使用Unicode的建议
- 程序中出现字符串时一定要加个前缀u。
- 不要用str()函数,用unicode()代替。
- 不用string模块,对Unicode支持的不好。
- 不到必须时,不要在程序中编解码Unicode字符。只在要写入文件或数据库或者网络时,才进行编码。相反的过程才进行解码。
Python序列——Unicode的更多相关文章
- python学习笔记:python序列
python序列包括字符串.列表和元组三部分,下面先总的说一下python序列共有的一些操作符和内建函数. 一.python序列 序列类型操作符 标准类型的操作符一般都能适用于所有的序列类型,这里说一 ...
- Python序列类型
Python序列类型 序列:字符.列表.元组 所有序列都支持迭代 序列表示索引为非负整数的有序对象集合 字符和元组属于不可变序列,列表可变 1)字符 字符串字面量:把文本放入单引号.双引号或三引号中: ...
- python序列和其它类型的比较
序列对象可以与相同类型的其他对象比较.它们使用 字典顺序 进行比较:首先比较两个python序列的第一个元素,如果不同,那么这就决定了比较操作的结果.如果它们相同,就再比较每个序列的第二个元素,以此类 ...
- Python序列——字符串
字符串 1 string模块预定义字符串 2 普通字符串与Unicode字符串 3 只适用于字符串的操作 4 原始字符串 5 Unicode字符串操作符 内建函数 1 标准类型函数与序列操作函数 2 ...
- Python 序列操作符与函数(字符串)
Python序列包括:元组.列表.字符串. 1.1 序列共同支持的函数: 函数 功能 说明 cmp(seq1,seq2) 比较序列大小 从左到右依次比较,直到比较出大小 len(seq1) 获取序列长 ...
- Python中Unicode字符串
Python中Unicode字符串 字符串还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte ...
- [Python笔记][第二章Python序列-复杂的数据结构]
2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...
- [Python笔记][第二章Python序列-tuple,dict,set]
2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...
- [python笔记][第二章Python序列-list]
2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...
随机推荐
- CA认证原理以及实现(下)
在上述的文章后了解到原理之后,我们这篇文章来进行CA的搭建. OPEN SSL 环境搭建在基础原理中我们提到了两种认证服务,单项认证服务和双向认证服务,我们就以双向认证服务举例说明.OpenSSL是一 ...
- ant的安装和配置
1.从官网下载bin源码 http://ant.apache.org/bindownload.cgi#Verify%20Releases 校验源码的完整性 2.直接把解压,然后把文件放入/usr/lo ...
- 关于#!/usr/bin/env python 的用法
在linux的一些脚本里,需在开头一行指定脚本的解释程序,如: !/usr/bin/env python 再如: !/usr/bin/env perl 那么 env到底有什么用?何时用这个呢?脚本用e ...
- SilverLight:基础控件使用(5)-TreeView控件-基本使用
ylbtech-SilverLight-Basic-Control:基础控件使用(5)-TreeView控件-基本使用 前台编辑 后台逐个添加 后台绑定数据源 1.A,返回顶部TreeView控件(树 ...
- K-L变换
K-L变换( Karhunen-Loeve Transform)是建立在统计特性基础上的一种变换,有的文献也称为霍特林(Hotelling)变换,因他在1933年最先给出将离散信号变换成一串不相关系数 ...
- [Algorithms] Sort an Array with a Nested for Loop using Insertion Sort in JavaScript
nsertion sort is another sorting algorithm that closely resembles how we might sort items in the phy ...
- vdWebControl.js去水印
vdWebControl.js可以在浏览器中展示cad图形(须要使用其自家的转换工具把cad转换为vds格式.工具免费,但转换完成后的文件带水印信息),支持编辑图形. vdWebControl.js试 ...
- css3 - 语言伪类选择器
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- hql 时间
1.hql中时间格式转换 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String d ...
- ActiveMQ测试工具
1. 测试工具 目前使用两种测试工具进行压力测试 1. Jmeter 测试单客户端收发多主题,测试高并发,大数据量时的接收效率 2. emqtt_benchmark测试多客户端收发主题,测试高吞吐量下 ...