python基本使用时常见错误

字符编码错误

如果要学习计算机编程语言,首先就要搞懂字符编码,否则在以后的学习过程中,将会是一场噩梦。在一开始使用的时候,我就遇到了很多的关于字符编码的问题,做个简单的测试:

可以看到python2在处理中文上会出现错误,而英文就可以。python3则不会出现这些问题。问题已经抛出来了,现在就来慢慢解释这个字符编码问题。

字符编码前世今生

字符串是一个数据类型,但是,字符串比较特殊的还有一个编码问题。

因为计算机只能处理数字,如果要处理文本,必须要将文本转换为数字才可以处理。而在计算机被设计的时候,采用的是8个比特位(bit)作为一个字节(byte),所以一个字节能够表示的最大字节数为255,如果要表示更大的数,则需要更多的字节。

由于计算机是美国人发明的,所以,最早只有127个字符被编码到计算机中,里面只包括了大小写的英文,符号,数字。这个表被称为ASCII码表。随着计算机技术的不断发展,得到了全球的普及,这就导致了一个问题,如何让计算机认识本国的语言。在中国,汉字的数量远远大于一个字节能够存储的范围,至少需要两个字节,而且还不能和原有的ASCII码表有冲突,所以,中国制定了GB2312编码,将中文编入其中。

中国如此,其他国家也是如此,每个国家根据自己国家的语言制定了码表就不可避免的产生冲突,结果就是,在多种语言混合的文本中,显示出来会有乱码。

为了解决这个问题,Unicode应运而生,Unicode码表将所有的语言统一到一套编码中,这样就不会产生乱码问题了。Unicode标准也在不断的发展,最常用的是用两个字节表示一个字符(如果是生僻字,就需要4个字节),现代操作系统和大多数的编程语言都直接支持Unicode。

Unicode码表虽然好,但是有一个问题:太长了!比如把ASCII编码的“A”用Unicode编码,只需要在前面补0就可以了。因此”A“的ASCII码表的Unicode编码是”000000000 01000001“。你需要的有效的数据只是后面的一个字节,如果使用的是Unicode编码编写一个英文的的文章的话,你会需要多一倍的空间,在存储和传输就十分的不划算。

所以,为了节约空间,又出现了把Unicode编码转化为”可变长编码“的”UTF-8编码“。”UTF-8编码“把一个Unicode字符根据不同的数字大小编码成了1-6个字符,常用的英文字母被编码成了1个字节,汉字通常是3个字节,只有很生僻的字符才被编码成4-6个字符。除了节省空间,还有一个好处就是ASCII编码可以看成是UTF-8编码的一部分。之前的那些用ASCII编码的文件可以在UTF-8下继续工作。

使用记事本的时候,首先,将从文件中读取的UTF-8字符转换为Unicode字符到内存中,编辑完成之后,保存的时候是将Unicode转换为UTF-8保存到文件中

浏览网页的时候,服务器会动态的生成Unicode内容转换为UTF-8再传输到浏览器。网页中的<meta charset="UTF-8" />就是表示该网页用的是UTF-8编码

python2的字符串编码问题解决

一开始说到,python3不会出现乱码的问题,是因为再python3中字符串是用Unicode编码的,也就是说,python的字符串可以支持多种语言。python2出现乱码是因为它默认采用的是ASCII编码格式。所以在使用之前,需要指定它的编码格式。

比如:

第一行的“# -*-coding:utf-8 -*-”就是声明使用的是UTF-8编码格式。

ImportError

导致这个问题有两个原因:

一个是循环导入,首尾相连

这样可以去报错信息中看第一个和最后一个是不是同一个

一个是导入该变量的时候还不存在。

慢慢补充中。。。。。。。。

python基本使用时常见错误的更多相关文章

  1. pyppeteer使用时常见的bug及基本使用(转)

    pyppeteer使用时常见的bug及解决办法: https://blog.csdn.net/Mr__lqy/article/details/102626025 pyppeteer的基本使用: htt ...

  2. python 处理protobuf 接口常见错误

    python 处理protobuf 接口常见错误 1.问题 : Assignment not allowed to repeated field '> http://www.coin163.co ...

  3. python pip 使用时错误: Patal error in launcher:Unable to create process using '"'

    当前我的电脑配置是64位, 装有python2.7 和python 3.6 两个版本 在使用pip install mysqlclient 的时候,出现了  Patal error in launch ...

  4. Python新手入门学习常见错误

    当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , ...

  5. Python运行时的常见错误

    1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加冒号(:)(导致 “SyntaxError :invalid syntax”) 2)使用 ...

  6. Zabbix探索:Zabbix API使用时的错误1

    好久没来了,最近比较疲倦,估计是从年初到现在没有休息的原因. 刚刚批量导入网络设备到Zabbix时,报错: Cannot implode expression 后面自然是IP和触发器的表达式. 最初还 ...

  7. python程序编写中常见错误

    1,NameError语法错误 s还没定义,给s赋值就行了 2,IndexError 索引错误 对于列表l1来说,只有4个元素,所以l1的Index只能是0-3,当你所输入的Index不在这范围,就会 ...

  8. 【python+selenium学习】常见错误: 'gbk' codec can't decode byte 0xb0 in position 30

    最近编写的自动化脚本,数据部分使用到了从配置文件中取,即自定义config.ini,但是在读取配置文件的时候却报错了'gbk' codec can't decode byte 0xb0 in posi ...

  9. Python中 "+=" 使用时的注意事项

    代码1: >>> l1=range(3) >>> l2=l1 >>> l2+=[4] >>> l1 [0, 1, 2, 4] & ...

随机推荐

  1. 缺少Packages?不妨在这里找

    一个很全的网站(Linux全平台,rpm,dpkg等) Packages Search

  2. ztree 获取最下级的子节点内容

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 使用Ext 创建树

    ext使用的是ext3.4.0版本 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> < ...

  4. Kafka Intro - Configuration

    #Notes: /opt/kafka/config/zookeeper.properties sample # the directory where the snapshot is stored.d ...

  5. iTween 不能两个游戏对象同时用一个Hashtable

    两个游戏对象,点击其中一个,两个对象一起旋转,再点一下,两个都旋转到原来角度. 如图:两个游戏对象不能用一个Hashtable,会出错,达不到两个一起转的效果. 每个对象要有自己的Hashtable来 ...

  6. Java基础09-循环结构

    1.while循环(循环次数不确定的情况通常用这个) 特点:先判断,再执行 public class Test{ public static void main(String[] args){ int ...

  7. 转:POST 400 Bad Request The request sent by the client was syntactically incorrect

    最近在做Web开发的时候,使用$.post提交数据,但是回调函数却没有被触发,按F12看控制台输出是:POST *** 400 Bad Request 后台是SpringMVC的,设置了断点也不会被触 ...

  8. Eclipse中引来的jar包乱码

    Eclipse中引入的jar包乱码jar包链接的源码,中文注释为乱码的解决方法: 1.将Eclipse的Preferences中的General>ContentTypes中的Java Class ...

  9. jemeter接口测试基础

    前言: 本文主要针对http接口进行测试,使用Jmeter工具实现. Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对 ...

  10. JEECMS站群管理系统-- 首页的加载过程

    在浏览器中输入http://localhost:8080/jeecms,回车 首先进入配置文件web.xml, <context-param> <param-name>cont ...