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脚本时碰到编码问题,才能有章可循. 我们 ...
随机推荐
- POJ 1458:Common Subsequence
Common Subsequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 41957 Accepted: 16 ...
- 自己手动实现简单的双向数据绑定 mvvm
数据绑定 数据绑定一般就是指的 将数据 展示到 视图上.目前前端的框架都是使用的mvvm模式实现双绑的.大体上有以下几种方式: 发布订阅 ng的脏检查 数据劫持 vue的话采用的是数据劫持和发布订阅相 ...
- docker 后台运行和进入后台运行的容器
先创建并进入一个新的被命名为newos的新容器 docker run -it --name newos docker.io/centos #创建并指定端口号映射 docker run -d -p ...
- Python 中 unittest 框架加载测试用例的常用方法
unittest 当中为我们提供了许多加载用例的方法,这里说下常用的两种方法...推荐使用第二种 第一种加载测试用例的方法:使用加载器加载两个模块 需要把所有的模块加载到套件中 那么就可以自动的运行所 ...
- 十七、JavaScript之幂运算
一.代码如下 二.执行效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...
- 十六、JavaScript之%运算符
一.代码如下 二.运行效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...
- React 学习笔记(1) 基础语法和生命周期
参看:视频地址 简单搭建一个react-cli: 2. React.createElement() 将object转化为 React语法 import React from 'react' impor ...
- net GC 学习以及问题
引用对象必要空间开销:对象指针.同步块索引 GC重要点: 每个应用程序包含一组根,每个根都是一个存储位置,其中包含指向引用类型对象的一个指针,该指针要么指向托管堆中的要给对象,要么为null.(这句话 ...
- 干货分享:Academic Essay写作套路详解
你想过如何中立的表达自己吗?大概只有10%不到的同学,会真正重视这个细节.但很多留学生能顺利写完作文已经不容易,还要注意什么中立不中立的.我知道这个标准,对许多同学有些过分,但很残酷的告诉你,这的确是 ...
- GAN评价指标之mode score
通过 Inception Score 的公式我们知道,它并没有利用到真实数据集的信息,所有的计算都在生成的图片上计算获得.而 Mode Score 基于此做了改进: 也就是说,想要提高 Mode Sc ...