python 3字符编码
python 3字符编码
官方链接:http://legacy.python.org/dev/peps/pep-0263/
在Python2中默认是ascii编码,Python3是utf-8编码
在python 的源代码文件中经常会看到:
# -*- coding: latin-1 -*- 这句话要写在文件的第一行或者第二行才有效果
这句话是声明Python源文件的编码方式。这个编码信息会在Python 解释器去解释这个文件时用到,使用这种编码方式去解释这个文件
因为所有文本,图片,声音,视频保存在磁盘中都必须是二进制的数据,对于文本,需要先转化为二进制然后才能保存在磁盘中,所以就出现了编码,
廖雪峰字符编码博客链接: https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000
关于unicode 编码,unicode编码 为了解决各国文字使用不同的编码造成的问题,出现了unicode,一个字符用两个字节表示
但是Unicode 在存储和传输的过程中,如果一个文件都是ascii 编码,用unicode 存储或传输,会造成很大的资源浪费。所以出现了utf-8 ,utf-16
utf-8 是变长编码,对于英文用一个字节表示,汉字用3个字节表示。避免了浪费。 在现代计算机的内存中普遍用 Unicode编码。
在python 中,文本类型统一用str 类型表示,二进制数据用bytes 类型表示。
>>> a='中文'
>>> type(a)
<class 'str'>
>>> b=bytes(a,encoding='utf-8')
>>> b
b'\xe4\xb8\xad\xe6\x96\x87'
>>> type(b)
<class 'bytes'>
>>>
以上的代码都在Python 的内存中,可以看到将a 转换为二进制数据,占了6个字节, 在计算机中为了方便显示,通常用16进制来表示2进制数据
因为一个16进制位可以用4个二进制位来表示。
e4实际上一个字节大小,e 1110 4 0100 e4 用二进制就是11100100
>>> c=bytes(a,encoding='gbk')
>>> c
b'\xd6\xd0\xce\xc4'
>>>
当用gbk 编码去转换为二进制的时候,就成了4个字节,在gbk 中,一个中文字符用2个字节来表示 一般在一个字符前面加u 表示是unicode 字符, 0x是十六进制数,0x 是八进制数。0b 是二进制数
用内置函数bin() oct() hex() 可以进行各进制的转换
>>> d=0xE4
>>> bin(d)
'0b11100100'
>>> d=0b11100100
>>> hex(d)
'0xe4'
>>>
>>> chr(65)
'A'>>> ord('A')
65
>>>
python 3字符编码的更多相关文章
- Python基础-字符编码与转码
***了解计算机的底层原理*** Python全栈开发之Python基础-字符编码与转码 需知: 1.在python2默认编码是ASCII, python3里默认是utf-8 2.unicode 分为 ...
- Python的字符编码
Python的字符编码 1. Python字符编码简介 1. 1 ASCII Python解释器在加载.py文件的代码时,会对内容进行编码,一般默认为ASCII码.ASCII(American St ...
- Python常用字符编码(转)
Python常用字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Code for Information Interchange,美国信息交 ...
- Python常见字符编码间的转换
主要内容: 1.Unicode 和 UTF-8的爱恨纠葛 2.字符在硬盘上的存储 3.编码的转换 4.验证编码是否转换正确 5.Python bytes类型 前 ...
- Python 的字符编码
配置: Python 2.7 + Sublime Text 2 + OS X 10.10 本文意在理清各种编码的关系并以此解决 Python 中的编码问题. 1 编码基本概念 只有先了解字符表.编码字 ...
- 转:Python常见字符编码及其之间的转换
参考:Python常见字符编码 + Python常见字符编码间的转换 一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Cod ...
- Python遇到字符编码出问题的一个相对万能的办法
在使用Python做爬虫的过程中,经常遇到字符编码出问题的情况. UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' ...
- Python:字符编码详解
相关文章 Python中文编码问题:为何在控制台下输出中文会乱码及其原理 1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Informati ...
- Python入门笔记(14):Python的字符编码
一.字符编码中ASCII.Unicode和UTF-8的区别 点击阅读:http://www.cnblogs.com/kingstarspe/p/ASCII.html 再推荐一篇相关博文:http:// ...
随机推荐
- Linux内核及分析 第八周 进程的切换和系统的一般执行过程
学习笔记: 一.进程调度与进程调度的时机分析 1.不同类型的进程有不同需求的调度需求: 第一种分类: —I/O-bound:频繁的进行I/O,通常会花费很多时间等待I/O操作的完成 —CPU-boun ...
- 同步手绘板——关于/dev/graphics/fb0权限的获取
需要先将手机进行root,接着通过代码将/dev/graphics/fb0文件修改为可读的权限
- js 基础-&& || 逻辑与和逻辑或
今天百度发现一个简化长if else if 语句的方法,看起来及其强大,感觉这样虽然对系统性能提升没有帮助但是代码更简练了,分析了一番,下面先说说自己学到的理论. 首先要弄清楚js 中对于 变量, ...
- github 心得体会
https://github.com/xu123/text 学习了很多知识感觉很有趣 git config :配置git git add:更新working directory中的文件至stagin ...
- weex 开发踩坑日记--环境配置、安卓运行、adb、开发
环境配置方面 1.需要安装java和android环境,java的话一定要下载jdk而不是jre. 在"系统变量"新建一个变量名为JAVA_HOME的变量,变量值为你本地java的 ...
- PAT 1021 个位数统计
https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296 给定一个k位整数N = d~k-1~*10^ ...
- [日常工作] cmd以及bash 直接使用当前目录的方法
1. 从知乎学到了一点.. 2. 之前想在比如f:\a\b 目录下执行cmd命令的时候 总是需要先 f: 再cd目录的方式. 3. 知乎上面学到 发现可以通过在当前目录下面 输入 cmd 或者是 b ...
- Mordern Effective C++ --auto
5. 优先使用auto而非显示类型声明 在C++之中,使用auto关键字声明类型可以将程序员从输入繁琐的类型中解放出来,编译器会自动推导出变量的实际类型. template<typename I ...
- python 协程库gevent学习--gevent数据结构及实战(三)
gevent学习系列第三章,前面两章分析了大量常用几个函数的源码以及实现原理.这一章重点偏向实战了,按照官方给出的gevent学习指南,我将依次分析官方给出的7个数据结构.以及给出几个相应使用他们的例 ...
- UVALive5870-Smooth Visualization-模拟水题
很水的模拟题,拿数组搞就好了. 注意边界的地方不要算重. #include <cstdio> #include <cstring> #include <algorithm ...