python中的字符编码问题往往是初学者容易弄不明白的问题, 要想将这个问题搞清楚,需要先弄明白以下的概念

  • decode 和 encode 函数的作用
  • 字符串字面量的编码格式

decode(str)  -  将其它编码字符串转换成Unicode编码字符串, 返回转换成Unicode编码的字符串

encode(str)  -  将Unicode字符串转换成其它编码(str)字符串, 返回转换成其它编码后的字符串.

所以, decode 和 encode的作用就是将其他编码转换成Unicode , 将Unicode转换成其他编码.
值得注意的是 ,调用decode的对象的本身的编码和decode形参指明的编码不一致时函数会出错,比如,str1字符串对象它本身的编码是ASCII的,但传入的参数为'gb2312',则函数会中断.
而当一个字符串对象它本身的编码不是Unicode却调用encode函数,那么函数也会出错.

# '大家好' 是一个字符串字面量, 在不同的编辑器中, 它的编码格式是不一样的
# 如果编辑器是以utf-8编码格式来保存文本的, 那么,所有的字符串字面量都是utf-8格式
# 如果编辑器是以gb2312编码格式来保存文本的,那么, 所有的字符串字面量都是ASCII格式
str1 = '大家好' # 因为编辑器是以gb2132编码保存文本的, 所以这里先将gb2312的字符串转换成Unicode类型的字符串# 因此, str1是gb2132编码的, str2是Unicode的
str2 = str1.decode('gb2312') # str2是Unicode编码的,因此可以调用encode函数
str2.encode("utf-8")
 

总结

    • 在调用decode函数时,一定要弄清楚调用这个函数的字符串对象本身是什么编码,只有这样你才知道你要传入的形参是什么
    • 在调用encode函数时,一定要确保调用这个函数的字符串对象本身是Unicode编码的.

Python 字符编码问题的处理的更多相关文章

  1. python 字符编码练习

    通过下面的练习,加深对python字符编码的认识 # \x00 - \xff 256个字符 >>> a = range(256)>>> b = bytes(a) # ...

  2. Python字符编码讲解

    声明:本文参考 Python字符编码详解 在计算机中我们不管用什么语言和程序,最终数据在计算机中的都是字节码(也就是01形式)的形式存在的,如果 计算机直接把字节码显示在屏幕上,很明显一般人看不懂字节 ...

  3. 深入理解Python字符编码--转

    http://blog.51cto.com/9478652/2057896 不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError ...

  4. 深入理解Python字符编码

    不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...

  5. Python字符编码详解,str,bytes

    什么是明文 “明文”是可以是文本,音乐,可以编码成mp3文件.明文可以是图像的,可以编码为gif.png或jpg文件.明文是电影的,可以编码成wmv文件.不一而足. 什么是编码?把明文变成计算机语言 ...

  6. Python字符编码补充

    字符编码: Python字符编码贯穿Python学习的始终,现在应用的是Python2中字符编码的问题是很多的. 这次是要彻底解决Python字符编码的问题!!! 1 字符编码的发展过程: 1 .AS ...

  7. python --- 字符编码学习小结(二)

    距离上一篇的python --- 字符编码学习小结(一)已经过去2年了,2年的时间里,确实也遇到了各种各样的字符编码问题,也能解决,但是每次都是把所有的方法都试一遍,然后终于正常.这种方法显然是不科学 ...

  8. 转1:Python字符编码详解

    Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MB ...

  9. 转2:Python字符编码详解

    1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...

  10. python字符编码(二)

    一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...

随机推荐

  1. Python_XML的三种解析方法

    什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这 ...

  2. 1.5 Hive初步使用和安装MySQL

    一.HQL初步试用 1.创建一个student表 #创建一个student表 hive> create table student(id int, name string) ROW FORMAT ...

  3. shell脚本自动部署nignx反向代理及web服务器,共享存储

    #!/bin/bash systemctl status nginx var=$? ] then yum install epel-release -y ] then echo "epel库 ...

  4. 《剑指offer》面试题17—合并两个排序链表

    题目:输入两个递增排顺序的链表,合并这两个链表并使合并后的链表仍是递增排序的. 重点: 1.代码鲁棒性:要判断输入的两个链表都为NULL:其中一个链表为NULL的情况. 2.用递归实现,注意递归的思路 ...

  5. layui icon样式1到7

    1: 2: 3: 4: 5: 6: 7:

  6. MongoDb 抛出"Error retrieving nonce"异常

    MongoDb在读取一个数据时抛出此异常, google之后也是只有源码没有任何相关结果, 考虑到之前同样的Db下不同的Collection没有发现此问题, 对比之后发现出错的url为: mongod ...

  7. c# IOCP.ClientEx2.ReadWrite 加断点遭遇System.AccessViolationException 问题

    起因: 如果在Debug模式下,在IOCP.ClientEx2.ReadWrite.cs while (0 > (nPackSize = _ipcp.Pack(arg_n64PackId, ar ...

  8. “我要点爆”微信小程序云开发实例

    使用云开发进行微信小程序“我要点爆”的制作 下一章:“我要点爆”微信小程序云开发之项目建立与我的页面功能实现 接下来我将对“我要点爆”微信小程序进行完整的开源介绍 小程序名称: 我要点爆 查看方式:从 ...

  9. StringUtils中常用方法leftPad(),rightPad(),center()

    org.apache.commons.lang3的StringUtils 方法如下: public static String leftPadTime(Integer time){    return ...

  10. ADO winform登录

    做一个程序,首先应该从登录,注册.以及增,删,改查开始,本页分享一下程序的登录 登录我们首先要有数据,所以要连接数据库,从数据库中获取我们用户的账号及密码.连接 数据库的代码:创建连接:SqlConn ...