python_中文乱码问题
1. 编码和解码的概念:
编码是将源对象内容按照一种标准转换为一种标准格式内容。
解码是和编码对应的,它使用和编码相同的标准将编码内容还原为最初的对象内容。
2. python中的编码和解码:
(1)decode的作用是将其他编码的字符串转换成unicode编码。
(2)encode的作用是将unicode编码转换成其他编码的字符串。如果待编码的字符串不是Unicode,python会进行以下两步:
a) 将字符串转换为解码为Unicode(采用python默认的编码:ASCII)
b) 将Unicode编码为指定的编码
3. 文件的编码格式的作用?
文件的编码格式决定了源文件字符串的编码格式
当文件中的字符串没有指定编码方式时,则采用“文件的编码格式”
当文件中的字符串指定了编码方式,则使用指定的编码方式。例如:u"哈"的编码方式为Unicode不管是在GBK文件中,还是UTF-8文件中
4. python文件中,编码声明的作用?
a. 声明源文件中将出现非ascii编码,通常也就是中文;
b. 在高级的IDE中,IDE会将你的文件格式保存成你指定编码格式
c. 决定源码中类似于u'哈'(unicode)这类声明的将‘哈’解码成unicode所用的编码格式,也是一个比较容易让人迷惑的地方
5. python默认的编码格式
python默认的编码方式为ASCII
6. 操作系统默认的编码格式
win7 32位系统,默认的编码方式是GBK
7. 经常出现的问题:
(1). 【代码和运行结果】:
文件的编码格式:UTF-8(无BOM编码)

【编码解读】:
1). 文件的编辑格式:决定了文件中所有字符的编码----UTF-8(无BOM编码)
故“试图打印中文”会用UTF-8进行编码\xE8\xAF\x95\xE5\x9B\xBE\xE6\x89\x93\xE5\x8D\xB0\xE4\xB8\xAD\xE6\x96\x87
2). python默认采用的编码方式为ASCII
python会用ASCII码对“试图打印中文”进行解码。两种编码方式不一样,故会报错
【修改方法】:
1). 在python文件中,加入编码声明: --------此时声明只能声明文件中会出现非ASCII编码,即中文编码
#-*- coding:utf-8 -*-
(2). 【代码和运行结果】:
文件的编码格式:UTF-8(无BOM编码)

【编码解读】:
1). 文件的编辑格式:决定了文件中所有字符的编码----UTF-8(无BOM编码)
故“哈哈”会用UTF-8进行编码\xE5\x93\x88\xE5\x93\x88
2). print语句它的实现是将要输出的内容传送了操作系统,操作系统会根据系统的编码对输入的字节流进行编码-----win7 32位操作系统的编码为GBK
故“\xE5\x93\x88\xE5\x93\x88”用GBK解码成了“鍝堝搱”
【修改方法】:
1). 将文件的编码格式修改为GBK(或者GB2312)
(3). 【代码和运行结果】:
文件的编码格式:UTF-8(无BOM编码)

【编码解读】:
1). 文件的编辑格式:决定了文件中所有字符的编码----UTF-8(无BOM编码)
故“哈哈”会用UTF-8进行编码\xE5\x93\x88\xE5\x93\x88
2). encode直接编码的方法会进行如下两步操作:
将Str解码成Unicode(采用python系统默认的编码方式ASCII)------故此步会报错
将Unicode编码成GBK
【修改方法】:
1). 将python系统的默认编码方式修改为UTF-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
2). 先对str进行解码,解码成Unicode编码格式,后将Unicode编码格式编码成GBK
str = str.decode("utf-8")
str = str.encode("gbk")
(4). 【代码和运行结果】:
文件的编码格式:UTF-8(无BOM编码)

【编码解读】:
1). 文件的编辑格式:决定了文件中所有字符的编码----UTF-8(无BOM编码)
故“哈哈”会用UTF-8进行编码\xE5\x93\x88\xE5\x93\x88
2). str = u"哈哈",转换成Unicode时,不是用文件的编码格式(UTF-8)进行的解码,而是用文件编码声明进行解码(GBK),这样导致出现错误
【修改方法】:
1. 将文件编码声明为:
#-*- coding:utf-8 -*-
8. 主要参考:
(1)http://blog.csdn.net/kiki113/article/details/4062063
(2)UTF-8、GBK、Unicoded编码对照表
python_中文乱码问题的更多相关文章
- java中文乱码解决之道(一)-----认识字符集
沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...
- MAC下 mysql不能插入中文和中文乱码的问题总结
MAC下 mysql不能插入中文和中文乱码的问题总结 前言 本文中所提到的问题解决方案,都是基于mac环境下的,但其他环境,比如windows应该也适用. 问题描述 本文解决下边两个问题: 往mysq ...
- java中文乱码解决之道(九)-----总结
乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...
- 解决springmvc+mybatis+mysql中文乱码问题【转】
这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...
- freemarker页面中文乱码
一.前言 简单的记录freemarker遇到的错误问题:ftl页面中文乱码 由于freemarker整合在ssm框架中,所以笔者直接贴配置代码 <beans xmlns="http:/ ...
- tomcat项目中文乱码问题解决方法
在部署tomcat项目时经常会遇到中文乱码问题,解决的方法可参考以下步骤. 1.更改Tomcat安装目录下的conf\server.xml,指定浏览器的编码格式为"utf-8"格式 ...
- IE下get传中文乱码的问题 -- 解决方案 (js)
W3school 函数 JavaScript 全局对象 定义和用法 encodeURI() 函数可把字符串作为 URI 进行编码. 语法 encodeURI(URIstring) 参数 描述 URIs ...
- JSP和Servlet的中文乱码处理
JSP和Servlet的中文乱码处理 前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下.应该是可以解决日常的乱码问题了.现在作以下总结希望对需要的人有所帮助.我 ...
- Git bash下中文乱码问题
Git bash下中文乱码--解决方案 解决办法1: 在git bash下,右键 出现下图,选择options: 选择"Text" 将Character set设置为 UTF-8 ...
随机推荐
- 《GK101任意波发生器》升级固件发布(版本:1.0.1build803)
一.固件说明: 硬件版本:0,logic.3 固件版本:1.0.1.build803 编译日期:2014-08-06 ====================================== 二. ...
- NBUT 1673 迷宫问题(DP)
[1673] 迷宫问题 时间限制: 1000 ms 内存限制: 65535 K 问题描述 Alex的猫咪不小心走进了迷宫,Alex为了心爱的猫咪,决定进入迷宫去解救他的猫咪. 已知猫咪坐标为(n - ...
- 彻底搞清楚字符编码: ASCII, ISO_8859, GB2312,UCS, Unicode, Utf-8
彻底搞清楚字符编码: ASCII, ISO_8859, GB2312,UCS, Unicode, U 1.ASCII: 0-127(128-255未使用),美国标准 2.IS0-8859-1(lati ...
- UVALive 2635 匈牙利算法
题意 给出k块地 规模n*m 需要在每块地中找至多一块h*w的地 这些地中如果包含字母 只能包含一种字母 如果一块地中选地使用了A 其余的地就不能使用A 但是全0可以重复 问 最后能最多选出来多少块地 ...
- PHP获取当前时间、时间戳的各种格式写法汇总[日期时间](转)
今天写下PHP中,如何通过各种方法 获取当前系统时间.时间戳,并备注各种格式的含义,可灵活变通.1.获取当前时间方法date()很简单,这就是获取时间的方法,格式为:date($format, $ti ...
- 【翻译】Kinect v2程序设计(C++) BodyIndex篇
通过Kinect SDK v2预览版,取得BodyIndex(人体区域)的方法和示例代码. 上一节,介绍了从Kinect v2预览版用Kinect SDK v2预览版获取Depth数据的方法. 这 ...
- eclipse SDK更新管理器安装插件
1.在Eclipse的主菜单,点击help,选择Install New Software 2.Work with: Indigo - http://download.eclipse.org/relea ...
- C#winfrom中splitContainer的用法
常用属性 (1).splitContainer不能被鼠标直接点击选中,可通过右击->选择splitContainer选中. (2).属性IsSplitterFixed用于设置拆分器能否移动. ( ...
- MVC问题
将 <customErrors mode="Off" defaultRedirect="~/404.html"> mode 设置为off 就可 ...
- redis 应用场景
1.string类型 : 图片和视频文件,静态文件 2.list 双向链表:回帖ID,我的关注列表,消息队列 length = redis.lpush('users:newest', 'user:go ...