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!'

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

相关文章

  • Python flask返回中文乱码的解决方法分享

    Python flask返回中文乱码的解决方法分享

    有时使用flask返回数据会出现带有中文的时候会显示成乱码(ascii)的情况出现,所以本文为大家整理了一下解决的方法,需要的小伙伴可以参考一下
    2023-07-07
  • Python绘制七彩花朵(用Turtle)

    Python绘制七彩花朵(用Turtle)

    这篇文章主要给大家介绍了关于Python使用Turtle绘制七彩花朵的相关资料,通过本文介绍的方法就算刚入门的朋友也可以很快的入手绘制出漂亮的七彩花朵,需要的朋友可以参考下
    2023-07-07
  • Python实现RSA加密解密

    Python实现RSA加密解密

    这篇文章主要介绍了Python实现RSA加密解密,加密技术在数据安全存储,数据传输中发挥着重要作用,能够保护用户隐私数据安全,防止信息窃取。RSA是一种非对称加密技术,在软件、网页中已得到广泛应用,下面文章更多相关内容需要的小伙伴可以参考一下
    2022-04-04
  • python主线程捕获子线程的方法

    python主线程捕获子线程的方法

    这篇文章主要为大家详细介绍了python主线程捕获子线程的方法,具有一定的参考价值,感兴趣的朋友可以参考一下
    2018-06-06
  • python中的随机函数小结

    python中的随机函数小结

    这篇文章主要介绍了python中的随机函数小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • python导入其他目录下模块的四种情况

    python导入其他目录下模块的四种情况

    在python工程中常常需要使用import引入自己编写的其他模块,但其它模块有时不在同一个文件夹下,下面这篇文章主要给大家介绍了关于python导入其他目录下模块的四种情况,需要的朋友可以参考下
    2022-12-12
  • Python2和Python3中@abstractmethod使用方法

    Python2和Python3中@abstractmethod使用方法

    这篇文章主要介绍了Python2和Python3中@abstractmethod使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python从入门到实战之数据结构篇

    Python从入门到实战之数据结构篇

    数据结构中有很多树的结构,其中包括二叉树、二叉搜索树、2-3树、红黑树等等。本文中对数据结构进行了总结,不求严格精准,但求简单易懂
    2021-11-11
  • python随机在一张图像上截取任意大小图片的方法

    python随机在一张图像上截取任意大小图片的方法

    今天小编就为大家分享一篇python随机在一张图像上截取任意大小图片的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python中列表的一些基本操作知识汇总

    Python中列表的一些基本操作知识汇总

    这篇文章主要介绍了Python中列表的一些基本操作知识汇总,皆属于Python的基本功,需要的朋友可以参考下
    2015-05-05

最新评论