一步一步搞定Python3.6编码问题 原创 奇猫 2017-08-18 12:25:41 ©著作权 文章标签 Unicode Python 编码格式 文章分类 Python 后端开发 ©著作权归作者所有:来自51CTO博客作者奇猫的原创作品,请联系作者获取转载授权,否则将追究法律责任 Python中的编码问题很蛋疼,我们遇到这类问题有时候会使用下面几个步骤处理该问题: 1:这么低级问题,别问同事了太丢人,赶紧百度; 2:卧槽,出了一堆广告,骂个娘,赶紧找相关解决问题方式; 3:尼玛,终于搞定,原来这么简单,赶紧搞定其它工作,晚上回头在查原因; 4:傻B单位每天加班,到家都11点了,赶紧洗洗睡了;等会,先来局王者农药...... 5:编码问题早就忘了; 6:过了几天又出现编码错误,,从第1步开始重新来过。 今天我们就花一局王者农药时间搞定Python3.6的编码问题。 搞清楚编码格式:1)编码格式:utf-8, gbk, utf-8, unicode... 计算机和编码关系:计算机如何显示打印文字:中文,英文等。计算机不能识别字符,那么它如何显示? 计算机可以读取数据,于是我们前辈就弄一个字模,通过01标识把这个字符给他画出来,然后使用一个二进制码和这个字模对应起来,这样,计算机就能根据这个二进制码把这个字符显示出来了。 计算机 -> 编码 -> 字模点阵 ->显示,打印等。2)为什么那么多编码格式? 计算机是美国人发明的,他们只需要使用英文字符和常用符号,于是ascii(256)就足够了; 后来计算机普及了,中国人想让处理汉字,日本人想让他处理日文,阿拉伯人想让他处理阿拉伯语,于是就有了各种编码格式;比如utf-8,;但是utf-8表示一个字符需要2个字节,这样表示一个英文字符有点浪费,于是大牛们整出了utf-8,utf-16等可变长编码格式。 出现了太多的编码格式,让人蛋疼,于是大牛们同意规范,又整出了unicode编码格式,支持所有的语言。 到这里,可能明白编码格式了。3)编写一个txt文件,内容为:"中国",他存储的是“中国”这个汉字么,还是?? 1: 借助工具看一哈: 文件内容:中国 文件存储内容:二进制数字:D6D0 B9FA 文件编码格式:gbk 2:修改下软件编码格式:utf-8 乱码有么有。 为什么乱码?因为文字存储编码格式为gbk,我们指定软件编码格式utf-8,然后问题出现了: 软件去utf-8的编码表里找不到D6D0 B9FA对应的字模,或者找错了,所以会乱码。Python中编码格式问题1:Python内置存储格式为unicode2:字符流和字节流问题: 1)字符流:程序内部使用,不能直接保存文件;str类型; 2)字节流:保存文件,网络传输;byte类型;3:Python中的编码格式转换#Python3.6 >>> s = '中国' >>> s.decode('utf-8') Traceback (most recent call last): File "<pyshell#21>", line 1, in <module> s.decode('utf-8') AttributeError: 'str' object has no attribute 'decode' >>> u8 = s.encode('utf-8') >>> u8 b'\xe4\xb8\xad\xe5\x9b\xbd' >>> u8.encode('utf-8') Traceback (most recent call last): File "<pyshell#24>", line 1, in <module> u8.encode('utf-8') AttributeError: 'bytes' object has no attribute 'encode' >>> u8.decode('utf-8') '中国' >>> python3.6版本中,s为unicode,是字符串类型,没有decode方法,所以做解码失败; u8是s使用utf-8编码后的数据,没有encode方法; u8可以使用decode方法解码成unicode,如果解码格式为其它,我们可以看看结果: >>> u8.decode('gbk') Traceback (most recent call last): File "<pyshell#27>", line 1, in <module> u8.decode('gbk') UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 2: illegal multibyte sequence 常见解码错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 2: 原因:u8的编码格式是utf-8,我们使用gbk去解码,造成该错误。 编码格式之间转换:(utf-8,utf-8...)->unicode ->(utf-8,utf-8...); unicode是中间的桥梁。 4:文件打开问题(环境:window下): 将一个文本文件存储为utf-8编码,>>> f = open('readme.txt') >>> f.read() Traceback (most recent call last): File "<pyshell#35>", line 1, in <module> f.read() UnicodeDecodeError: 'gbk' codec can't decode byte 0xbd in position 8: incomplete multibyte sequence 将文件打开,读取的时候为什么会有问题; 1)文件存储形式字节,读取的时候是字节,编码格式为Utf-8 2)读取文件时候,read方法会做一个解码操作,但是他是什么形式解码呢?查看帮助文档:>>> help(open) Help on built-in function open in module io: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) Open file and return a stream. Raise IOError upon failure. ..... >>> f <_io.TextIOWrapper name='readme.txt' mode='r' encoding='cp936'> 这里可以看到,f的编码格式"cp936",这个和gbk是一样的编码格式,到这里知道为啥会出错了吧,文件存储字节是utf-8编码,解码使用gbk方式,所以会出错,在open的时候指定编码格式utf-8再来一次试试:>>> f = open('readme.txt', encoding='utf-8') >>> line = f.readline() >>> line '\ufeff中国' >>> print (line) 中国 读取成功,"\ufeff"是window下utf-8文件编码格式头。到这里我们就基本搞清楚常见的编码问题了。 5:文件存储问题: 一个栗子:>>> f = open('test.txt', 'w') >>> f.write('中国') >>> f.close() 传的参数为字符流,但实际存储为字节流,>>> f = open('test.txt', 'rb') >>> f.read() b'\xd6\xd0\xb9\xfa'自己搞搞:使用utf-8方式打开test.txt, 然后读取出现什么问题?好了到这里,编码基本就到这里,如果还有不清楚的可以参考俺的视频课程:http://edu.51cto.com/course/8983.html,第二章内容。 赞 收藏 评论 分享 举报 上一篇:python sublime开发环境搭建 下一篇:我的友情链接 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 如何创建可拖动且支持点击功能的悬浮球? 这次要实现的是这种效果,能够在页面上推拽和点击的,拖拽的话,就跟随鼠标移动,点击的话,就触发新的行为,当然也有指定某些区域不能拖拽,接下来就一起来看看有什么难点吧~需要监听的鼠标事件既然是web页面,那肯定要监听的就算鼠标事件mousedown(MDN: developer.mozilla.org/zh-CN/docs/…)mousemove(MDN: developer.mozilla.org/ sed Math 鼠标移动 免费源码 商城源码 django channels用于支持websocket请求 Django Channels 是一个为Django提供异步扩展的库,通常主要用来提供WebSocket支持和后台任务.原理它的原理是将Django分为2种进程类型:一个用于处理HTTP和websocket的协议服务一个用于运行视图,websocket handler以及后台任务的worker服务两者通过ASGI 协议通信,类似于WSGI但是运行在网络层上,并且支持更多协议.Django Chan django websocket channels channel layer 主表单支持插入查找字段关联实体的主表单了 这是我的第508篇原创文章,写于2024年2月20日。此功能的官方介绍请参考:Edit related table records directly from another table’s main form 。以前我们要在表单上显示查找字段关联记录的信息只能用快速视图窗体,我以前的文章 重新认识快速视图窗体(Quick View Form) 有过一些介绍。但是快速视图窗体展 Dynamics 365 Power Apps python 3.6 支持windows server 2012 ## 实现Python 3.6支持Windows Server 2012的步骤为了在Windows Server 2012上使用Python 3.6,我们需要按照以下步骤进行配置。下面是实现此目标的步骤概述:```mermaidflowchart TD A(下载Python 3.6安装包) --> B(安装Python 3.6) --> C(设置环境变量) --> D(验证Pyt Python 环境变量 Server 支持firefox 3.6的onenote插件 以前的一篇博文推荐了Clip To OneNote插件,之后其作者一直没有更新,但是经过我简单的改动后,在firefox3.5的版本都可以使用。今天升级到firefox3.6后,发现这个插件已经无法使用了。很幸运,作者又开始更新了,介绍给大家这个插件:https://addons.mozilla.org/zh-CN/firefox/addon/12003 firefox onenote 休闲 3.6 clipnote Python3.6不支持wxpy # Python 3.6不支持wxpy## 1. 引言wxpy 是一个基于微信网页版接口的 Python 库,提供了丰富的微信操作功能。然而,从 Python 3.6 开始,wxpy 不再兼容该版本。本文将详细介绍这个问题的原因,并给出一些解决方案。## 2. 问题解析在 Python 3.6 中,引入了一个新的语法特性——f-strings(格式化字符串字面值)。这个新特性在字符 Python 解决方案 微信 python3.6/anaconda pip报错 TypeError: parse() got an unexpected keyword argument 'transport_encoding' 背景:想学习python安装suds来调WSDL,在pip安装时候报了TypeError: parse() got an unexpected keyword argument 'transport_encoding' 的错误. python 3.X pip安装报错原因:目前的pip版本不是最新的 解决办法:cmd下执行conda install pip进行更新... Python DirectAdmin安装mod_encoding支持中文 转载地址:http://www.benmao.com/archives/2210 DirectAdmin安装mod_enc dockerfile python 3.6 # 如何在Docker中使用Python 3.6## 前言欢迎小白开发者加入这个精彩的开发世界!在本篇文章中,我将教给你如何在Docker容器中使用Python 3.6。Docker是一种容器化技术,它可以帮助我们轻松地创建和管理应用程序的运行环境。Python 3.6是一种流行的编程语言,具有丰富的库和框架,非常适合开发各种应用。## 整体流程下面是使用Dockerfile构建Pyt Docker Dockerfile Python python 3.6 aes # Python 3.6 AES 加密算法AES(Advanced Encryption Standard)是一种对称加密算法,用于对数据进行加密和解密。它是目前应用最广泛的加密算法之一,被广泛用于保护敏感数据的安全性,例如密码学、电子商务等领域。在本文中,我们将使用 Python 3.6 来实现 AES 加密算法,并提供代码示例进行说明。## 什么是 AES 加密算法?AES 是一种 ci 加密算法 数据 python3.6支持vs2013 python3.6支持MySQLdb 使用pip install MySQLdb命令安装时报错,可以使用以下方法解决:安装文件可以从下面链接获取:链接:https://pan.baidu.com/s/1gz-HgiNCSZTfvSA1HtR2yg 提取码:5zn2 首先https://pypi.org/project/mysqlclient/#files下载对应的安装文件,我电脑需要的是mysqlclient-1.4.2.p python3.6支持vs2013 mysql python 团队 python团队不再支持python3.6 ubuntu18.4出现报错:py:32: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography and will be removed in a future python 团队 ide python linux ubuntu python3.6支持爬虫吗 python3.8兼容3.6吗 Django版本与Python版本兼容对照表2019年1月23日 Django, Python 940 views 0Django版本与Python版本兼容性对照表,码笔记分享:Django和Python兼容对照表Django版本Python版本1.112.7, 3.4, 3.5, 3.6, 3.7 (added in 1.11.17)2.03.4, 3.5 python3.6支持爬虫吗 Python 版本兼容 不兼容 scrpy 支持python3.6 scrapy怎么样 Scrapy 简介Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。Scrapy 使用了 Twisted 异步网络框架来处理网络通讯,结构清晰明了,并且包含了各种中间件接口,可以灵活的完成各种需求。安装Scrapy 是使用Python开发,属于Python的第三方包。它的安装和其他三方包没什么区别。当前Scrapy scrpy 支持python3.6 python 爬虫框架scrapy优势 ide 数据 中间件 scrapy支持python3.6 scrapy怎么样 scrapy框架简介: Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。 尽管Scrapy原本是设计用来屏幕抓取(更精确的说,是网络抓取),但它也可以用来访问API来提取数据。scrapy架构图:scrapy的各个模块: crapy Engine(引擎 scrapy支持python3.6 scrapy框架 scrapy优缺点 scrapy不足 scrapy架构图 Python:no encoding declared 错误 使用Python编译的时候出现如下错误:SyntaxError: Non-ASCII character ‘\xe5’ in file magentonotes.com.py on line 2, but no encoding declared; see http://www.python.org... python 编译错误 web开发 解决方法 ascii码 python 3.6 支持windows server 2012 python3.8支持win7吗 Python解释器安装现在Windows7还广泛使用,而 Python 3.9 以后的版本不支持 Windows 7。为了支持更多的用户,我们这里提供 Python 3.8 解释器下载。大家点击下面的链接,官网地址即可下载 :https://www.python.org/ Python3.8解释器-64位 Python3.8解释器-32位如果您电脑的 Windows python Python 环境变量 python中的ensemble库 python的encoding 个人python临时学习记录 Python 编码&注释(一)python脚本python脚本通常的写作形式: #!/usr/bin/env python # -*- coding: encoding -*-其中,第一行指出了解释脚本所需要的命令,即指定一个解释器;第二行指定了脚本中的字符编码方式encoding"根据这个声明,Python会尝 python中的ensemble库 python Python 编码方式 python3.7.4支持的apscheduler版本 python3.8兼容3.6吗 python2.7,python3.6,python3.8多版本windows10安装,pip多版本共存 1、官网下载安装包,建议安装32位,自动兼容X64x86是32位,x86-64是64位。可以通过下面3种途径获取python:web-based installer 是需要通过联网完成安装的executable installer 是可执行文件( python 多版本 下载安装 Encoding Problem Description Given a string containing only 'A' - 'Z', we could encode it using the following method: 1. Each sub-string containing k same char #include 字符串 i++ 微信 3c