python3utf8gbk
⑴ 新手,求教关于python3编码的问题
你需要明白两个概念:
什么叫字符串、字节串
在Python中字符串是指一串可以展示在终端里、供人阅读的字符,至于字符采用什么编码并不重要,同样的文字,可能是用Unicode、UTF-8或GBK编码,但打印在终端中的内容相同,那么就认为是同一串字符串。而字节串是指将字符串通过某种编码转换得到的一串字节,同样一个字符串,使用不同的编码转换后得到的字节串可能完全不同。
什么叫encode、decode
encode中文为编码,顾名思义,是将字符串以某种编码形式编码得到字节串的过程;相反,decode中文为解码,是将字节串以某种编码形式翻译得到字符串的过程。
a是一个字符串,它的内容是“周杰伦”这三个字,类型是str;b = a.encode('utf-8')是将a以utf-8形式编码得到的字节串,它的内容是“周杰伦”这三个字的utf-8编码,类型是bytes。
⑵ Python3 如何对url解码
url编码:
import urllib
url = 'http://test.com/s?wd=哈哈' #如果尘铅早此网站编码是激蠢gbk的话派雀,需要进行解码,从gbk解码成unicode,再从Unicode编码编码为utf-8格式。
url = url.decode('gbk', 'replace')
print urllib.quote(url.encode('utf-8', 'replace'))
⑶ python3 中文编码问题,Non-UTF-8 code starting with 'xb5'
遇到中文编码问题时,使用Python3编写程序并打印中文,但在Geany编辑器中直接报错,提示“第三行中是非utf-8代码,但未声明编码方式。”
为解决此问题,需按照官方指南指定编码方式。具体步骤如下:
1. 在程序第一行或第二行加入如下形式的代码,指定编码方式。例如:# -*- coding: utf-8 -*-
2. 修改源代码,加入指定编码方式的注释。
3. 运行程序,发现结果被解释为拉丁文,而非预期的中文。
4. 考虑到中文显示异常,尝试将编码方式修改为UTF-8,但报错提示字符集错误,无法解码。继续排查原因。
5. 发现编辑器的编码格式并非UTF-8,这可能是导致问题的原因。
修改源代码编码方式为与编辑器一致的GBK格式,重新运行程序,问题解决。
同样,修改编辑器编码方式、源代码编码方式都为UTF-8,也可解决此问题。
总结,关键在于确保文件保存的编码方式与源代码指定的编码兼容,这样才能实现正常执行。通过上述步骤,最终解决了中文编码问题,确保了程序正确显示中文内容。
⑷ python命令行输入中文乱码怎么办
python2.X,代码中指定了UTF-8,但是在cmd命令行窗口时,打印的中文仍然会乱码。
在python3不存在该问题
运行结果:
原因
中文windows默认的输出编码为gbk ,与脚本中定义的UTF-8不一样,所以出现了解码失败的情况。
相关推荐:《Python基础教程》
解决方法
有如下两种方法可以解决这个问题
方法一
我们可以通过先把中文解码为unicode,然后再转化为gbk来解决这个问题:
修改后运行结果:
方法二
当然,我们也可以通过改变cmd命令行窗口的输出格式来解决这个问题:
·chcp 65001 就是换成UTF-8代码页
·chcp 936 可以换回默认的GBK
但是这样就降低了脚本的兼容性,在其他环境运行的时候可能还会出现这样的错误,而且可能会影响其他脚本运行,所以推荐使用第一种方法。