py3为什么str要用unicode而不用utf8?
在其它博客上看到这样的话
python3中str默认为Unicode的编码格式
Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk等等
所以在Python3中必须将str类型转换成bytes类型的
在Python中使用encode的方式可以进行字符的编码
问题1:
那既然如此, str为啥不直接用utf8呢? 毕竟py3代码文件的编码都已经改为默认utf8了,
str用unicode编码为bytes存在内存里很大呀, 毕竟两个字节起步, 用utf8不香吗?
上面其它博客里还有一句话, 我感觉有点问题
Unicode是一32位编码格式
问题2:
unicode不是utf16吗? 那应该是16位编码格式吧
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
简单地回答:
答1:str 默认是用的 utf-8 解码器, str 的内存表示参考 PEP 393。
答2:unicode 不是 utf-16,utf-16 是一种 unicode 编码格式。
一般说的 Unicode 其实包含了下面的部分:
一般我们说用 Unicode 编码是不够准确的,因为我们实际用的是 UTF ,Unicode 转换格式,是计算机中编码和表示码点的具体格式。
摘一段 Unicode 规范文档 2.5 节 Encoding Forms
Unicode 规定了字符集、码点、编码方式,这些共同组成 Unicode 标准。
你说的 UTF-16,和 UTF-8 一样,只是一种编码方式,摘 Unicode 规范的 3.9 节 Unicode Encoding Forms:
再回头说 Python 的 Unicode,推荐读 Howto: Unicode 指南 ,有官中。