python中的编码和解码及\x和\u问题

 更新时间:2022年05月20日 11:16:12   作者:气球会膨胀  
这篇文章主要介绍了python中的编码和解码及\x和\u问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

编码和解码及\x和\u问题

“字符在内存里的表示是unicode,如果要存盘或者发到网络就经过utf-8,然后对端收到依次解码。”

Python 3里面,str在内存里是unicode表示的

‘中文’ == ‘\u4e2d\u6587’

'中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
 '\u4e2d\u6587'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'

1个汉字用unicode表示一般是2个byte,

例如:

‘中’=\u4e2d(十六进制写法【即2bytes】)

'A'.encode('ascii')
>>>b'A'
('\u0041').encode('ascii')
>>>b'A'
'A'.encode('utf-8')
>>>b'A'

note: b’A’和’A’

在python 3中

b’A’是ascii编码的01010101的字节,占1个byte;

'A‘是在内存里按unicode形式编码的/ucc,占的是2个byte。

unicode编码后是bytes,如果这个字节范围不在ascii的表示范围内,就会显示成\x(十六进制形式)

例如:

  • 汉字编码成bytes,去查看这个bytes肯定只能看到\x系列,因为这个bytes的内容肯定不在ascii范围内;
  • 英文编码成bytes可以看到对应的英文字母,本质上它还是没有含义的010101的字节流而不是字符。
"abc".encode('utf-8')
b'abc'
'中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
1个汉字,按utf-8编码,一般是3个bytes,\xe4是十六进制表示的1个byte。

相同的英文字符,ascii编码和utf-8编码的结果是一致的,因为这两种编码都使用一个byte表示一个英文字符

'abc'.encode('ascii').decode('utf-8')
'abc'

可以用一个编码然后再另一个解码,是可以成功还原的。但一般是不会这么做的。

ord函数获取字符的整数表示和chr数把编码转换为对应的字符

 ord('A')
65
ord('中')
20013
chr(66)
'B'
chr(25991)
'文'

对str和对bytes用len,意义是不同的。

len(str)统计字符数,len(bytes)统计bytes数

>>> len('中文')
2
 len(str)统计字符数
>>> bt1 = '中文'.encode('gb2312')
>>> bt2 = '中文'.encode('utf-8')
>>> bt1
b'\xd6\xd0\xce\xc4'
>>> bt2
b'\xe4\xb8\xad\xe6\x96\x87'
>>> len(bt1)
4
>>> len(bt2)
6

以Unicode表示的str通过encode()方法可以编码为指定的bytes

python解析 \x 和 \u "乱码"

参数错误

\xe5\x8f\x82\xe6\x95\xb0\xe6\x9c\x89\xe8\xaf\xaf  

今日已经完成过此任务,请明日再做此任务吧!

\u4eca\u65e5\u5df2\u7ecf\u5b8c\u6210\u8fc7\u6b64\u4efb\u52a1\uff0c\u8bf7\u660e\u65e5\u518d\u505a\u6b64\u4efb\u52a1\u5427!

python2.7解析方法

>>> print(u'\xe5\x8f\x82\xe6\x95\xb0\xe6\x9c\x89\xe8\xaf\xaf  '.encode('unicode_escape').decode('string_escape')) 
>>>print('\u4eca\u65e5\u5df2\u7ecf\u5b8c\u6210\u8fc7\u6b64\u4efb\u52a1\uff0c\u8bf7\u660e\u65e5\u518d\u505a\u6b64\u4efb\u52a1\u5427!'.decode('unicode_escape'))

python3解析方法

>>>('\xe5\x8f\x82\xe6\x95\xb0\xe6\x9c\x89\xe8\xaf\xaf  '.encode('raw_unicode_escape')).decode()
>>>'\u4eca\u65e5\u5df2\u7ecf\u5b8c\u6210\u8fc7\u6b64\u4efb\u52a1\uff0c\u8bf7\u660e\u65e5\u518d\u505a\u6b64\u4efb\u52a1\u5427!'

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python3.8对可迭代解包的改进及用法详解

    Python3.8对可迭代解包的改进及用法详解

    这篇文章主要介绍了Python3.8对可迭代解包的改进及用法详解,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • 浅谈Python的自省Introspection和反射机制Reflection

    浅谈Python的自省Introspection和反射机制Reflection

    这篇文章主要介绍了浅谈Python的自省Introspection和反射机制Reflection,反射就是通过字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动,需要的朋友可以参考下
    2023-08-08
  • Python笔记之观察者模式

    Python笔记之观察者模式

    这篇文章主要为大家详细介绍了Python笔记之观察者模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • 使用python绘制人人网好友关系图示例

    使用python绘制人人网好友关系图示例

    这篇文章主要介绍了使用python绘制人人网好友关系图示例,需要的朋友可以参考下
    2014-04-04
  • Python字符串逆序输出的实例讲解

    Python字符串逆序输出的实例讲解

    今天小编就为大家分享一篇关于Python字符串逆序输出的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 基于Python3.6+splinter实现自动抢火车票

    基于Python3.6+splinter实现自动抢火车票

    这篇文章主要为大家详细介绍了基于Python3.6+splinter实现自动抢火车票,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Python使用py2neo操作图数据库neo4j的方法详解

    Python使用py2neo操作图数据库neo4j的方法详解

    这篇文章主要介绍了Python使用py2neo操作图数据库neo4j的方法,结合实例形式详细分析了Python使用py2neo操作图数据库neo4j的具体步骤、原理、相关使用技巧与操作注意事项,需要的朋友可以参考下
    2020-01-01
  • Python深度学习之实现卷积神经网络

    Python深度学习之实现卷积神经网络

    今天带大家学习如何使用Python实现卷积神经网络,这是个很难的知识点,文中有非常详细的介绍,对小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • Python使用Dash开发网页应用的方法详解

    Python使用Dash开发网页应用的方法详解

    本文主要是通过Dash的Checklist组件,简单介绍使用Dash开发的Web应用,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-09-09
  • 基于Python实现音乐节奏可视化效果

    基于Python实现音乐节奏可视化效果

    这篇文章主要为大家详细介绍了如何基于Python语言实现音乐节奏可视化效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-06-06

最新评论