python3编码问题个人理解
#coding=utf-8
a = "你" # 这个字符串是Unicode和 a = u“你”等价
b = b'\\u4f60' #这个表示b是字节串(如果需要显示b的值则 print(b.decode("unicode-escape")) )系统会返回“你”这个值是因为它根据utf-8来给你解码
print(a.encode("unicode-escape")) #这个表示a这个字符串编码成Unicode的字节串 返回值为b'\\u4f60'
print('\u4f60') #等价于 print(a) 等价于 print('你'),系统实际打出时会进行以下操作
print('\u4f60'.encode("utf-8").decode("utf-8"))
#python默认使用utf-8编码,将Unicode的字符转化为utf-8格式,然后在查看codepage表对应的值,显示出“你”这个字符串
以下是搞了很久脑子的问题。
print(b'\u4f60'.decode("unicode-escape")) #返回“你”,这里b'\u4f60'是Unicode的字节串,所以需要解码成Unicode字符
print('\u4f60'.encode("utf-8").decode("utf-8")) #返回“你” 此处“\u4f60”和“你”等价,将将Unicode编码成utf-8格式,然后根据codepage表解码成“你”
以下因为钻牛角尖了,所以把自己搞混乱了,想通后整理内容如下。
“你”的Unicode字节串是b'\\u4f60'
“你”的utf-8的字节串是b'\xe4\xbd\xa0'
由于python3是字符串都是Unicode格式,默认编码格式是utf-8
所以print('\u4f60')会默认将它当成Unicode格式来解码成utf-8的字符串来显示。
所以个人理解是print('\u4f60')打印给用户查看的返回值计算机做的操作是print('\u4f60'.encode("utf-8").decode("utf-8"))
而print('\xe4\xbd\xa0')打印乱码是因为在Unicode的codepage表中代表的就是乱码(除非python把字符串都变成utf-8格式,那么就能正常显示“你”)
python3编码问题个人理解的更多相关文章
- 转发:吐血总结,彻底明白 python3 编码原理
吐血总结,彻底明白 python3 编码原理 写的不错,转发学习一下,侵删.. 原文地址https://zhuanlan.zhihu.com/p/40834093 防止原文看不到了 这里粘贴复制一下: ...
- python2和python3编码问题
欢迎加入python学习交流群 667279387 一.什么是编解码 1.什么是unicode 2.编码方式 二.python中的编解码 1.python2 (1).encode() 和 .decod ...
- python3编码问题
继续收集python3编码问题相关资料 资料来源 鹏程的新浪博客(转载)http://blog.sina.com.cn/s/blog_6d7cf9e50102vo90.html 这篇鹏程老师写的关 ...
- python2和python3编码
python2编码 unicode:unicode 你好 u'\u4f60\u597d' | | | | encode('utf8')| |decode('utf8') encode('gbk')| ...
- Python2 和 Python3 编码问题
基本存储单元 位(bit, b):二进制数中的一个数位,可以是0或者1,是计算机中数据的最小单位. 字节(Byte,B):计算机中数据的基本单位,每8位组成一个字节. 1B = 8b 各种信息在计算机 ...
- python3编码
一.字符编码 1.什么实字符编码:将人识别的字符转换成计算机能识别的01,而转换的过程或者规则就是字符编码表. 而这种字符编码表表示了一种对应关系. 2.常用的字符编码表有:ascii.unicode ...
- ASCII、Unicode、UTF-8以及Python3编码问题
编码问题,其实的确是个很烦人的问题,一开始觉得不需要看,到后来出现问题,真的是抓狂, 而像我们这些刚刚涉及到这些问题的小白来说,更是无从下手,所以查阅资料,总结理解下各个概念以及Python3的编码问 ...
- 从python2,python3编码问题引伸出的通用编码原理解释
今天使用python2编码时遇到这样一条异常UnicodeDecodeError: ‘ascii’ code can’t decode byte 0xef 发现是编码问题,但是平常在python3中几 ...
- 【python测试开发栈】带你彻底搞明白python3编码原理
在之前的文章中,我们介绍过编码格式的发展史:[文章传送门-todo].今天我们通过几个例子,来彻底搞清楚python3中的编码格式原理,这样你之后写python脚本时碰到编码问题,才能有章可循. 我们 ...
随机推荐
- jmeter非GUI模式命令
一.如果没有.jtl文件,运行如下命令: jmeter -n -t baidu.jmx -l result.jtl 以非GUI形式运行Jmeter脚本jmeter -n -t baidu.jmx -l ...
- springboot指定配置文件运行
1.springboot指定配置文件运行 创建三个配置文件如下: application.properties内容如下: spring.profiles.active=rabbit如上配置,在运行时就 ...
- Spark技术学院-进去能学到啥?
Spark技术学院是什么? 主要是浪尖,前腾讯现阿里的大神一起搞的知识分享基地,旨在帮助大家由入门到精通spark,hbase,kafka大数据重要的框架,还有给入门小白指点入门方法,分享入门资料,对 ...
- spctl命令返回的结果输入到文本中
说一下我遇到的问题. mac自动打包完之后上传到苹果商店公正,公正后需要检查一下公正的结果, spctl -a -v LBCast.app #查看是否公证成功 显示如下表示公证成功了,有Notar ...
- spring boot 使用swagger
在pom.xml中添加maven依赖 <dependency> <groupId>io.springfox</groupId> <artifactId> ...
- 086-PHP数组按数字排序和按字母排序
<?php $arr=array(2,54,167,'a','A','12'); //定义一个数组 echo '数组排序之前的信息:<br />'; print_r($arr); / ...
- 069-PHP数组下标
<?php $arr=array(98,'hello',67,'A',85,NULL); //定义一个数组 $x=0; //定义三个作为下标的变量 $y=3; $z=5; echo " ...
- Elasticsearch 使用集群
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- Bean 注解(Annotation)配置(3)- 依赖注入配置
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...
- VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1123
在新机器上,启动虚拟机报了个错: 使用VMware® Workstation 11.1.2 build-2780323安装MacOS系统时出现以下错误: VMware Workstation 不可恢复 ...