关于python中的unicode字符串的使用
来源:互联网 发布:2017年旅游数据 编辑:程序博客网 时间:2024/06/05 04:01
unicode——》编码encode('utf-8')——》写入文件
读出文件——》解码decode('utf-8')——》unicode
在使用unicode的时候,必须注意以下的原则:
1、 程序中出现字符串的地方加前缀u,表示为unicode类型
2、不要使用str函数,在使用的时候使用unicode函数
3、不要使用string模块
4、只有在写入文件或者数据库或者网络的时候,才使用encode函数来进行编码发送;只有在把数据读取回来的时候,才使用decode进行解码
在使用读写unicode数据库的时候,注意几个方面:
1、数据库服务器,例如MySQL,只要每个表使用utf-8格式来进行编码即可
2、数据库适配器,例如mysqldb,在connect()方法中使用use_unicode方法
3、web开发框架,例如django,进行更多的设置
#!/usr/bin/env python #-*- coding:utf-8 -*- #声明为unicode编码文件,否则会报错 CODEC = 'utf-8' FILE = 'unicode.txt' hello_out = u'Hello KEL,中文测试\n' bytes_out = hello_out.encode('utf-8') #在写入文件的时候进行编码为utf-8,从而保存在文件中的编码为utf-8 f = open(FILE,'w') f.write(bytes_out) f.close() f = open(FILE,'r') hello_in = f.read() bytes_in = hello_in.decode(CODEC)#读出文件的时候,进行解码,从utf-8进行解码,解码为unicode类型 f.close() print bytes_in,
以上的程序为当写入文件的时候,必须进行编码,从而在文件中保存为正确的编码格式;在读出文件的时候,进行适当的解码,从而转换为unicode编码来进行处理。
在进行使用unicode编码的时候,必须声明此文件使用的编码类型,否则会报错,报错内容如下:
[root@python 48]# python uniFile.py File "uniFile.py", line 6 SyntaxError: Non-ASCII character '\xe4' in file uniFile.py on line 6,
but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
python对unicode的支持:
1、内建的unicode函数,用来生成unicode函数——通过一个字节串和编码方法显式的创建一个unicode字符串,通常不指定编码方式的字节串是没有任何意义的。
>>> kel = unicode('kel','utf-8') >>> print kel kel >>> kel u'kel'
2、内建的decode方法和encode方法,一个是进行编码,一个是进行解码
3、unicode字符串对象是basestring的子类,使用u或者U来创建实例,在支持原始字符串的时候,可以使用ur或者UR,u必须写在r的前面
- >>> kel = ur'this is 汉字'
- >>> kel = ru'this is 汉字'
- File "<stdin>", line 1
- kel = ru'this is 汉字'
- ^
- SyntaxError: invalid syntax
4、 在对象中,如果一个对象包含一个__unicode__()方法,那么可以将一个对象转换为unicode对象
- >>> kel = '汉字'
- >>> kel
- '\xe6\xb1\x89\xe5\xad\x97'
- >>> kel.encode('utf-8')
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)
1、 无论何时,当你的程序接收到来自网络或者文件或者用户输入等的时候,应当立即创造一个unicode对象,找出最合适的编码,使用decode来进行创建unicode对象。
2、无论何时,当你的程序要发送文本数据到网络或者写入文件或者输出等的时候,应该探查正确的编码,并用呢种编码将你的文本转变为字节串,使用encode方法来进行发送数据
创建一个unicode字符串:
- >>> kel = unicode('中文string','utf-8')
- >>> print kel
- 中文string
- >>> kel = unicode('中文string','utf-8')
- >>> print kel.encode('utf-8')
- >>> kel = unicode('中文string','utf-8').encode('utf-8').decode('utf-8')
- >>> print kel
- 中文string
将unicode对象转变为字节串,称之为对该字符串进行编码;
从基于字节的对象中载入一个unicode字符串,必须对齐进行解码,将从字节串转换为字符,也就是unicode对象
当处理字节串和unicode编码的时候:
会将字节串转换成unicode编码,在隐式的情况下,并且假设字节串为ascii编码,如果包含非ascii编码,那么将会有unicodedecodeerror的异常发生。
在默认进行转换的时候,都是使用ascii编码进行转换。——从而在每次报错的时候,都是ascii异常编码或者解码异常,
- 关于python中的unicode字符串的使用
- 关于python中的unicode字符串的使用
- python 中的unicode与字符串
- Python中的Unicode字符串&raw字符串
- python的中的字符串类型:byte string和unicode string
- 关于python的字符串使用
- Python Unicode字符串格式化中的一个陷阱
- 关于python unicode的实验
- 使用python将用ASCII表示的16进制unicode编码的ASCII字符串转换为unicode字符串
- python中的字符串使用
- python去掉 unicode 字符串前面的 u
- Python下unicode字符串的处理
- python中使用自然字符串和Unicode字符串
- 关于python中的字符串编码
- python string unicode字符串
- python 打印unicode字符串
- Python中Unicode字符串
- Python中Unicode字符串
- tornado tcpclient 应用实例
- MySQL登录问题 ERROR 1045 (28000)
- struts2实现对查询结果的下载
- 立方和等式
- Hbase集群搭建
- 关于python中的unicode字符串的使用
- Unity Label文字效果
- 密码发生器
- 讯飞语音测评SDK的搭建与运用(Android studio)
- java实现括号匹配
- 剑指offer:求1+2+...+n(c/c++)
- MySQL 5.6 for Windows 解压缩版配置安装
- Hadoop1中如何确保HDFS的高可靠(HA)
- java测试Junit框架