Python字符编码问题
2014-12-23 15:48
162 查看
写Python经常受到字符编码的困扰, 此问题主要是在2.x中. 因为2.x中的字符串有两种类型: str和Unicode, 它们共同的祖先是basestring.下面的经验主要是基于Windows上面的Python2.x, 使用MacOS可以减少许多不必要的烦恼.
之所以经常出现字符乱码,有以下几点原因:
Python默认使用ASCII码解释,有时候文件流(或者其他流)不是ASCII码的时候会出现乱码
Windows_中文版使用的是gbk编码,(尤其是Windows的命令行工具)
读取的流,有时候是gbk编码(或者其他编码格式)
str类型与Unicode类型转换或者拼接的时候,由于不一致会发生错误.
解决方法主要有下面几种:
文件第一行写上注释: # coding=utf-8, 告知Python解释器源代码的编码格式
所有与字符串相关的变量都设置成为Unicode类型, 比如 name = u"xiaoming"
利用Unicode编码作为桥梁转换, 先解码成为Unicode,之后编码成为你的目标编码格式. 比如一个文件时utf-8编码,但是Windows命令行是gbk编码,可以这样: filehandle.read().decode("utf-8").encode("gbk"), decode是解码成为Unicode编码(按照utf-8的规则解码, 这个过程是utf-8-->Unicode), encode是再次将字符串编码成为gbk格式(这个过程是: Unicode-->gbk),这样Windows命令行就可以正常读取出来了
使用codecs模块.
之所以经常出现字符乱码,有以下几点原因:
Python默认使用ASCII码解释,有时候文件流(或者其他流)不是ASCII码的时候会出现乱码
Windows_中文版使用的是gbk编码,(尤其是Windows的命令行工具)
读取的流,有时候是gbk编码(或者其他编码格式)
str类型与Unicode类型转换或者拼接的时候,由于不一致会发生错误.
解决方法主要有下面几种:
文件第一行写上注释: # coding=utf-8, 告知Python解释器源代码的编码格式
所有与字符串相关的变量都设置成为Unicode类型, 比如 name = u"xiaoming"
利用Unicode编码作为桥梁转换, 先解码成为Unicode,之后编码成为你的目标编码格式. 比如一个文件时utf-8编码,但是Windows命令行是gbk编码,可以这样: filehandle.read().decode("utf-8").encode("gbk"), decode是解码成为Unicode编码(按照utf-8的规则解码, 这个过程是utf-8-->Unicode), encode是再次将字符串编码成为gbk格式(这个过程是: Unicode-->gbk),这样Windows命令行就可以正常读取出来了
使用codecs模块.
相关文章推荐
- Python中的字符编码问题encode/decode
- python默认字符编码问题
- 【python】\\u的字符编码问题
- Python输出中文到文件时的字符编码问题
- python基础教程学习笔记 — 字符编码问题
- python中的字符编码问题
- Python3 字符编码问题
- python 处理字符编码问题
- Python遇到字符编码出问题的一个相对万能的办法
- python经常出现的字符编码问题详解
- python字符编码问题以及json编码问题
- 计算机字符编码问题总析(基于Python)
- 做爬虫时候遇到的中文字符编码问题(Python)
- Python字符编码问题
- Python中字符编码的问题
- Python_字符编码问题,chardet,codecs
- mysql, python,MySQLdb等的字符编码问题
- python 字符编码 调用其他程序 的一些问题记录
- python 编码问题——字符编码
- python 字符编码出现的问题 IDLE 一定要设置啊!!!!!!!