Python2 处理 Unicode 字符串的规则
在 Python2 中处理 Unicode 字符串,需遵循如下规则:
1. 程序中的字符串要加前缀 u
2. 不要用 str(),而应该用 unicode() 作为字符串转换函数。不要使用 chr(),而应该使用 unichr()
3. 不要使用 string 模块
4. 如非必要,不要使用 encode 和 decode 编解码 unicode 字符串。只有当要将 unicode 字符串写入文件,数据库,或者网络时,要先将其 encode 为 byte stream,然后再写入,同样的,从文件,数据库,或者网络读取的 byte stream 要先 decode 为 unicode 字符串,然后才能使用。
例如:
if __name__ == '__main__':
#str_out = u'Hello world!'
str_out = u'宁静致远'
print '>>> str_out = %s' % str_out # for test
byte_encode = str_out.encode('utf-8')
# write the encoded bytes stream into file
fho = open('use_unicode_encode_decode_3.log', 'w')
fho.write(byte_encode)
fho.close()
# read the encoded bytes stream from file, and then decode it
fhi = open('use_unicode_encode_decode_3.log', 'r')
byte_in = fhi.read()
fhi.close()
str_in = byte_in.decode('utf-8')
print '<<< str_in = %s' % str_in # for test
完。
Python2 处理 Unicode 字符串的规则的更多相关文章
- Unicode 字符串排序规则(一):如何确定单个字符的顺序
一.一个具体的例子引发的问题 当今是国际化的时代,多种语言可能同时显示在屏幕上.比如一个人可能喜欢听华语歌.英文歌.韩文歌和日语歌,又比如他的联系人中有中国人.英国人.日本人.韩国人以及有英文名字的中 ...
- Unicode 字符串排序规则(二):如何比较字符串
一.UCA 简介 Unicode Collation Algorithm (UCA) 是 Unicode 规定的如何比较两个字符串大小的算法,也是事实上的标准.我们先来看下它的几个特征. 1.1 Mu ...
- 关于python中的unicode字符串的使用
基于python2.7中的字符串: unicode-->编码encode('utf-8')-->写入文件 读出文件-->解码decode('utf-8')-->unicode ...
- python2.7入门---字符串
这次咱们就来看一下python的字符串类型.首先我们要知道,字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串.创建字符串很简单,只要为变量分配一个值 ...
- Python中Unicode字符串
Python中Unicode字符串 字符串还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte ...
- python unicode字符串
程序开发中,不同语言文字的显示,不同字符集之间的转换非常麻烦,在python的unicode的使用中,对这点感触颇深.所以,以下总结了python中对unicode字符处理的一些理解. 程序存储.传输 ...
- UNICODE字符串与多字节字符串的转换
相互转换的两个函数的声明: 1. 多字节字符串与宽字符串的转换 int MultiByteToWideChar( UINT CodePage, // code page,一般设为 CP_ACP DWO ...
- c# Unicode字符串的解码
前两天工作中遇到个奇怪的问题,一个unicode字符串(即“\uXXXX”形式)变量,调用HttpUtility.UrlDecode解码过后,还是原样,要么就是乱码状态.无奈之下只能自己写一个解码函数 ...
- Python Cookbook(第3版)中文版:15.14 传递Unicode字符串给C函数库
15.14 传递Unicode字符串给C函数库¶ 问题¶ 你要写一个扩展模块,需要将一个Python字符串传递给C的某个库函数,但是这个函数不知道该怎么处理Unicode. 解决方案¶ 这里我们需要考 ...
随机推荐
- es6 语法 (let 和const)
一.let 和const 1.let 只在自己声明的块作用域中有效: function test(){ let a = 'a'; var b = 'b'; for(let i =1;i<3;i+ ...
- [vue三部曲]第一部:vue脚手架的搭建和目录资源介绍,超详细!
第一步 node环境安装 1.1 如果本机没有安装node运行环境,请下载node 安装包进行安装1.2 如果本机已经安装node的运行换,请更新至最新的node 版本下载地址:https://nod ...
- Android 进度条按钮实现(ProgressButton)
有些App在点击下载按钮的时候,可以在按钮上显示进度,我们可以通过继承原生Button,重写onDraw来实现带进度条的按钮. Github:https://github.com/imcloudflo ...
- pyinstaller打包错误 UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 160:
注:我的博客原本在CSDN,现转到博客园,图片采用以前的图片,并没有盗图. 在将.py文件打包时,出现了下列错误 >>C:\Users\小呆\PycharmProjects\pycharm ...
- Unity3D 4.x编辑器操作技巧
unity wiki(en chs) unity官网 unity manual(chs 官方最新) 各个版本unity编辑器下载地址: https://unity3d.com/cn/get-un ...
- ERP口碑订单无法落桌的解决方法
第一步,退出ERP 第二步,打开控制面板卸载erp 第三步,删除erp安装路径的所有文件 第四步,卸载sql服务,操作方法如下(win+R—输入cmd—输入sc delete mysql_sl 回车键 ...
- python datetime object 去除毫秒(microsecond)
>>>import datetime >>>d = datetime.datetime.now().replace(microsecond=0) >>& ...
- C#-判断语句(五)
判断语句主要有if...else.switch和 条件?语句1:语句2 三种,而if...else中又有if语句,if...else.if...else if...else和if中嵌套if这几种,但是 ...
- 数据库之mysql篇(6)—— mysql常用函数函数/自定义函数
常用函数 运算函数 我相信你都能看懂,所以以上的不再做过多解释 然后还有个,前面漏掉的between and: 意指10是否在0到20之间,如果是返回1,否则返回0 日期函数 这个要稍微注意一下参数, ...
- 高性能JavaScript模板引擎 artTemplate
下载地址 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...