python2的编码问题
来源:互联网 发布:淘宝购物怎样返利 编辑:程序博客网 时间:2024/05/21 18:34
最近写代码遇到了python2的编码问题,在网上看过其他大佬的各种总结和我的实际操作来写一点总结。方便以后回顾。也不一定对,所以不做他人的参考
1.编码和解码的概念
编码是把各种字符,包括中英文,标点等编成计算机能理解的二进制代码(byte string也叫字节流)
解码是把二进制代码解释成人们能理解的各种字符(也可以认为就是unicode码,因为一个unicode码就代表一个字符,unicode包含了世界上所有字符)
2.python2中字符有两种类型
一种是str类型,就是byte string字节流。另一种是unicode型,用法是a=u'你好'。这两种类型的字符都可以正常print
3.程序中出现中文乱码怎么解决
这里引用一位大佬的总结
在python2中英文字符全都是用ascii码编码的,不管怎么print都没问题,但是如果某个变量含中文字符,那么ascii码不能识别,所以需要在文件头加上注释#coding=utf-8,申明用utf-8编码,而我发现在pycharm中,如果定义一个a=‘你好’,a确实是用utf-8编码的(这是因为开头申明过了),但是print a会出现乱码,这是由于str类型变量的编码方式和pycharm的编码方式不一样造成的,我在pycharm的file->settings->editor->file enconding找到pycharm的project encoding默认是GBK,把它也改成utf-8就不会出现中文乱码了。这里注意如果a是unicode类型的变量那么不会有任何乱码问题,所以解决中文乱码的另一个方法就是print a.decode('utf8').
3.打开本地html文件时报错或者出现中文乱码
这里情况有点复杂,如果文件打开出现中文乱码那么原因就还是上面红字说的str类型变量的编码和pycharm编码方式不一样,要么改pycharm的编码方式,要么就用charset.detect()看文件的编码方式是什么,然后按照相同方式解码,就是上面红字说的第二种方法。有时候还会报错,我觉得为了大部分打开文件时和爬网页时的正确性,还是改掉pycharm的project encoding为utf8吧。
参考资料有https://www.cnblogs.com/yangruiGB2312/p/5790405.html,http://blog.csdn.net/u010223750/article/details/56684096,https://www.cnblogs.com/litaozijin/p/6416133.html
- python2的编码问题
- python2.7编码的问题
- python2编码。。感觉很奇怪的问题。。
- 坑爹的python2编码问题
- Python2获取中文文件名的编码问题
- Python2与Python3的编码问题
- python2.7.1编码问题
- python2.7.1编码问题
- python2.× 编码问题
- python2 中编码问题
- Python2.7 编码问题
- python2 中文编码问题
- python2 中文编码问题
- [python]Python2编码问题
- Python2编码问题
- Python2编码问题
- Python2编码问题
- Python2编码问题
- NASA无人机障碍赛:专业选手Vs.人工智能,赌一赌谁赢?
- URL 规范
- hibernate学习教程-数据缓存
- C++ 显示数据库的数据到界面
- 服务器根据URL以及data信息与微信服务器交互的post请求方法(之一)
- python2的编码问题
- Iptables教程
- XMLHttpRequest
- 最小生成树--Truck History(poj 1789);
- 云星数据---Scala实战系列(精品版)】:Scala入门教程014-Scala实战源码-Scala函数定义与调用方式
- [图]Microsoft Store上线字体:未来Windows 10可轻松切换字体
- CSS样式添加及基础语法------借鉴w3shool.com.cn
- java.util.ArrayList与java.util.Arrays$ArrayList区别(转)
- 优达(Udacity)-机器学习基础-回归