python2 中 unicode 和 str 之间的转换及与python3 str 的区别


Posted in Python onJuly 25, 2019

在python2中字符串分为 unicode 和 str 类型

Str To Unicode 使用decode(), 解码

Unicode To Str 使用encode(), 编码

返回数据给前端时需要先将unicode转换为str类型, 事实上, python2 中的 str 就是一串字节(byte), 而网络通信时, 传输的就是字节. 如果前端需要接收json数据, 需要使用 json.dumps() 将数据转换为json格式进行返回, 当数据是嵌套类型的数据, 内层的数据可能无法直接转换为str类型的数据, 这时可以使用eval()函数进行转换, 再使用json.dumps()进行转换为json格式的数据, json 事实上就是一串字符串.

python2 默认情况下 字符串 的类型是 str 类型, 如果需要得到 unicode 类型的字符串, 需要使用下面的方式进行声明:

my_str = u"lowmanisbusy" # 在变量前面加上 u

在 python2 中如果没有重新指定字符编码, 定义中文的字符串时, 需要加上 "u", 指明该字符串为 unicode 类型, 指定使用unicode编码对其进行编码保存:

my_zh_str = u"渣男不但丑" # 在变量前面加上 u

unicode编码: unicode编码为世界上所有字符都分配了一个唯一编号, 为十六进制, 如中文简体汉字 “渣” 的 Unicode编号就是 6E23, 在 python2就是 "\u6e23", 但是unicode仅仅定义了每个字符的编号,并没有定义如何将这个编号进行存储的方式,所以后来出现了utf-8, gbk等编码格式, 它们都是 unicode 的一种实现方式, 仍然使用了unicode 中的唯一编号, 个人对其的简单理解就是在unicode编码的基础之上又定义了对字符的存储方式.

在python3中字符串分为 str 和 bytes 两种类型

Str To Bytes 使用 encode(), 编码
  Bytes To Str 使用 decode(), 解码

这里需要说明的是, python3 中 bytes 类型的字符串, 就相当于 python2 中 str 类型的字符串, python3中没有unicode类型的字符串, 这里其实涉及到默认编码的问题, python3默认字符编码为:utf-8, python2默认字符编码为:ASCII, ASCII码 包含了128个字符, 其中包括所有的英文字符, 阿拉伯数字, 标点符号, 控制符号等, 却没有中文, 中文是象形文字, 需要使用到更多的字节进行组合来表示出每个汉字, 因此ASCII是无法满足对中文的表示的, 所以 python2中如果没有重新设置字符编码的话,代码中就不允许出现str类型的中文字符串(可以指定为unicode类型), 因为Cpython2解释器无法识别. 至于 ASCII, UNICODE, UTF-8 之间的关系与区别这里就不细说了, 可以自行去了解一下( utf-8编码  是  unicode编码 的一种实现方式, 个人理解可以认为是下面这样一种关系: utf-8 <---> unicode <--->byte, 最终,数据的传输仍然是以二进制的形式一个一个字节进行传输的)

默认情况下,python3中字符串的类型为 str, 在web框架中, 会自动将 str转换成 byte 向前端返回.

当需要将某种编码格式的bytes转换另外一种编码格式的bytes时需要先按原来的编码格式进行解码成str类型, 再使用新的编码格式转换为bytes类型

如: 若存在变量 my_bt, 其为编码格式 gbk 的 bytes, 需将其转换为utf-8的编码格式,需要进行如下的处理:

my_str = my_bt.decode("gbk") # 解码
my_bt = my_str.encode("utf-8") # 重新编码

 因为 python3 中没有 unicode 类型的字符串, 所有在 python3 中使用下面这种方式定义字符串是没有意义的

my_str = u"渣男不但丑"

ps:下面看下Python2之unicode转字符串

str.encode('unicode-escape').decode('string_escape')

总结

以上所述是小编给大家介绍的python2 中 unicode 和 str 之间的转换及与python3 str 的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
Python 类与元类的深度挖掘 II【经验】
May 06 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
pthon贪吃蛇游戏详细代码
Jan 27 Python
Python实现打砖块小游戏代码实例
May 18 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Python爬虫解析网页的4种方式实例及原理解析
Dec 30 Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
python递归函数用法详解
Oct 26 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 Python
Python 3.8 新功能全解
Jul 25 #Python
python3.7 的新特性详解
Jul 25 #Python
python issubclass 和 isinstance函数
Jul 25 #Python
django的分页器Paginator 从django中导入类
Jul 25 #Python
python threading和multiprocessing模块基本用法实例分析
Jul 25 #Python
Python交互式图形编程的实现
Jul 25 #Python
python之pexpect实现自动交互的例子
Jul 25 #Python
You might like
Apache2 httpd.conf 中文版
2006/12/06 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
2015/08/17 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
pygame实现弹力球及其变速效果
2017/07/03 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
解决python运行启动报错问题
2020/06/01 Python
python通过cython加密代码
2020/12/11 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
NET程序员上机面试题
2015/05/23 面试题
毕业实习个人鉴定范文
2013/12/10 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
绿色环保演讲稿
2014/05/10 职场文书
专题组织生活会方案
2014/06/15 职场文书
党的生日活动方案
2014/08/15 职场文书
导游词之永泰公主墓
2019/12/04 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
Python几种酷炫的进度条的方式
2022/04/11 Python
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技