python unicode字符串
程序开发中,不同语言文字的显示,不同字符集之间的转换非常麻烦,在python的unicode的使用中,对这点感触颇深。所以,以下总结了python中对unicode字符处理的一些理解。
程序存储、传输、操作字符串时,对代码中写好的字符串或者手动输入的字符串,程序会自动将这些字符串按照某种字符集编码(一般为本地系统字符编码)将字符串转换为字节码,这是字符的“解码”,将显示的字符转化为字节码;
程序中显示文字时,计算机读取一串字节,选择合适的字符集(一般为本地系统字符集)将字节码翻译为字符集中对应的字符,这些字符一般为本地存储的字符图片,然后调用系统的显示接口将这些“图片”打印在屏幕上。这是字符的“编码”,将字节码转化为可显示的字符。 如果字符的解码和编码采用的是相同的字符集,则将显示出来原始给定的字符,结果正常;如果不是同一种字符集,则有可能会出现乱码(因为相同的字节码在不同的字符集中可能对应不同的字符,一种字符集的某字符解码后的字节码在另一种字符集中编码之后可能是不同的字符)。
为了方便的处理不同字符集编码的字符之间的相互转化,定义了unicode标准,即将世界上所有的字符统一起来,每个字符都分配一个唯一的id,作为该字符的unicode码值。在代码中写定字符或者程序输入字符后,可以先将字符转化为unicode"字符",这是“解码”过程;进行一系列操作之后,如果需要显示出原来的字符,则将unicode"字符"转化为对应的字符集中该字符所对应的字节码,然后找到对应的字符,进而显示。
这样,不同字符集编码就通过unicode"字符"联系了起来。
#直接定义unicode字符串,通过在字符串前加 u 的方式
unicodestring = u"Hello world" utf8string = '好人' #可以这样直接写,是因为在py文件的开头写了 #encoding=utf-8, 这样在整个py
# 文件中,所有的字符串的编码编码方式都设置为了utf-8 #将某种字符集编码的字符串转化为unicode字符串, 即“解码”
ustring = unicode(utf8string, "utf-8") ustring # 输出 u'\u597d\u4eba'
print type(ustring) # 输出 <type 'unicode'> #将unicode字符串转化为某种字符集编码的字符串,即“编码”
unicodestring.encode("utf-8")
ustring.encode('utf-8') print ustring.encode('utf-8') # 输出 好人, 解码到unicode和从unicode编码的字符集相同
print ustring.encode('gbk') #输出乱码 濂戒汉, 解码到unicode和从unicode编码的字符集不同
以上部分为参考网络+自己yy,如果有错误,欢迎指正~
python unicode字符串的更多相关文章
- Python中Unicode字符串
Python中Unicode字符串 字符串还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte ...
- 关于python中的unicode字符串的使用
基于python2.7中的字符串: unicode-->编码encode('utf-8')-->写入文件 读出文件-->解码decode('utf-8')-->unicode ...
- Python的字符串操作和Unicode
字符串类型 str:Unicode字符串.采用''或者r''构造的字符串均为str,单引号可以用双引号或者三引号来代替.无论用哪种方式进行制定,在Python内部存储时没有区别. bytes:二进制字 ...
- Python Cookbook(第3版)中文版:15.14 传递Unicode字符串给C函数库
15.14 传递Unicode字符串给C函数库¶ 问题¶ 你要写一个扩展模块,需要将一个Python字符串传递给C的某个库函数,但是这个函数不知道该怎么处理Unicode. 解决方案¶ 这里我们需要考 ...
- [python]去掉 unicode 字符串前面的 u(转)
add by zhj: 其实一般情况下,不会遇到变量c这种编码的,往往是哪些出错了,才会出现这种情况.所以遇到这种情况,要先 查看代码,避免这种情况的出现 原文:https://mozillazg.c ...
- Python 入门(二)Unicode字符串
Unicode字符串 字符串还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节 (byte),所以,一 ...
- Python:Base1(数据类型,print语句,变量,定义字符串,raw字符串与多行字符串,Unicode字符串,整数和浮点数运算,布尔类型运算)
1.Python中数据类型: 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据 ...
- Python基础-字符串格式化_百分号方式_format方式
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- python(七)字符串格式化、生成器与迭代器
字符串格式化 Python的字符串格式化有两种方式:百分号方式.format方式 1.百分号的方式 %[(name)][flags][width].[precision]typecode (name) ...
随机推荐
- 测试-Unity修改权重
以下内容仅为猜想,只进行了初步验证 FBX骨骼中包含所绑定的顶点索引,导入Unity后,Unity会把层级树保存起来,然后实例化的时候映射过去 编辑器下权重信息本身不在fbx文件的meta里,不可修改 ...
- 算法大全(c,c++)
http://www.2cto.com/kf/201109/105758.html 算法大全(C,C++)一. 数论算法 1.求两数的最大公约数function gcd(a,b:integer):in ...
- java中split()特殊符号"." "|" "*" "\" "]"
关于点的问题是用string.split("[.]") 解决. 关于竖线的问题用 string.split("\\|")解决. 关于星号的问题用 string. ...
- Codeforces Round #368 (Div. 2) B
Description Masha wants to open her own bakery and bake muffins in one of the n cities numbered from ...
- An error occurred while filtering resources-----maven项目报错
解决办法 需要在pom中设定jdk的版本 <plugins> <!-- compiler插件, 设定JDK版本 --> <plugin> <groupId&g ...
- 被指定为此窗体的 MdiParent 的窗体不是 MdiContainer。 参数名: value
解决方案 添加this.IsMdiContainer = true; 或者下面的方法
- JavaScript的条件语句
JavaScript的条件语句 1.JavaScript的条件语句包括以下几个 (1)if - 只有当指定条件为true时,使用该语句来执行代码: (2)if...else - 当指定条件为true时 ...
- HDU 4996 Revenge of LIS(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4996 题意:求1到n的全排列中,有多少个排列的最长上升子列长度为K? 思路:对于当前的最长上升子列,我 ...
- DevExpress中使用DocumentManager,并确保不重复
https://www.devexpress.com/Support/Center/Question/Details/Q411356 void ActivatForm(Type someType) { ...
- Django 分页2 (Pagination)
分页是Web应用常用的手法,Django提供了一个分页器类Paginator(django.core.paginator.Paginator),可以很容易的实现分页的功能.该类有两个构造参数,一个是数 ...