一、字符编码与转码

1、bytes和str

之前有学过关于bytes和str之间的转换,详细资料-》bytes和str(第四字符串)

2、为什么要进行编码和转码

由于每个国家电脑的字符编码格式不统一(列中国:GBK),同一款软件放到不同国家的电脑上会出现乱码的情况,出现这种情况如何解决呢?! 当然由于所有国家的电脑都支持Unicode万国码,那么我们可以把Unicode为跳板,先把字符编码转换为Unicode,在把Unicode转换为另一个国家的字符编码(例韩国),则不会出现乱码的情况。当然这里只是转编码集并不是翻译成韩文不要弄混了。

 3、Python3.0进行编码转换

#!/usr/bin/env python
#-Author-Lian
#Python3.0环境
import sys,chardet print (sys.getdefaultencoding()) #获取默认编码(UTF-8)
name = "连志雷" #此时name为Unicode编码 name_utf8 = name.encode("utf-8") #转为UTF-8编码
print(name_utf8)
print(chardet.detect(name_utf8)) #注:Unicode编码无法用chardet查看编码格式
print(name_utf8.decode("utf-8")) #编码为UTF-8后再转码为Unicode name_gbk = name.encode("gbk") #转为GBK编码
print(name_gbk)
print(chardet.detect(name_gbk)) #查看当前的字符编码格式
print(name_gbk.decode("gbk")) #编码为GBK后再转码为Unicode #utf-8
#b'\xe8\xbf\x9e\xe5\xbf\x97\xe9\x9b\xb7'
#{'confidence': 0.87625, 'encoding': 'utf-8'}
#连志雷
#b'\xc1\xac\xd6\xbe\xc0\xd7'
#{'confidence': 0.73, 'encoding': 'windows-1252'}
#连志雷

4、Python2.0中的编码转换

① 声明字符编码(utf-8)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lia #Python2.0环境 默认编码ascii
import sys
name = "你好" #ascii码里是没有字符“你好”的,此时的name为uft-8 print (sys.getdefaultencoding()) #获取默认编码
print(name.decode("utf-8")) #把uft-8码解码为Unicode name_unicode=name.decode("utf-8")
print (name_unicode,type(name.decode("utf-8"))) #查看当前的字符编码 name_gbk=name_unicode.encode("gbk") #把字符有Unicode转换为gbk
print(name_gbk) #ascii
#你好
#(u'\u4f60\u597d', <type 'unicode'>)
#���

② 使用默认字符编码(ascii)

#!/usr/bin/env python
#-Author-Lia
import sys
name = "nihao" #英文字符,且第二行字符声明去掉,此刻name为ascii码 print (sys.getdefaultencoding()) #获取系统编码
name_unicode = name.decode("ascii") #ascii码转换为unicode
print(name_unicode,type(name_unicode)) name_utf8=name_unicode.encode("utf-8") #unicode转换为utf-8
print(name_utf8,type(name_utf8)) name_gbk=name_unicode.encode("gbk") #unicode转换为gbk
print(name_gbk,type(name_gbk)) #ascii
#(u'nihao', <type 'unicode'>)
#('nihao', <type 'str'>)
#('nihao', <type 'str'>)

总结:Python2.x里默认字符编码为ascii,如果不声明编码格式,则输入的字符格式都是ascii码(中文不在ascii里面,输入报错);如果要输入中文字符,则需要声明编码格式,此时中文字符的编码格式不跟随默认字符编码格式,而是与声明的编码格式一致(上面实例为utf-8),这些都需谨记。

Python开发【第三章】:Python编码转换的更多相关文章

  1. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  2. [Python笔记][第三章Python选择与循环]

    1月28日学习 Python选择与循环 选择结构 多分枝选择结构 if 表达式 1: 语句块 1 elif 表达式 2: 语句块 2 elif 表达式 3: 语句块 3 ... else : 语句块 ...

  3. python 历险记(三)— python 的常用文件操作

    目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...

  4. 【神经网络与深度学习】【python开发】caffe-windows使能python接口使用draw_net.py绘制网络结构图过程

    [神经网络与深度学习][python开发]caffe-windows使能python接口使用draw_net.py绘制网络结构图过程 标签:[神经网络与深度学习] [python开发] 主要是想用py ...

  5. ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇

    原文:ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇 第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列 ...

  6. ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇

    原文:ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇 第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是 ...

  7. Python开发(三):字符编码,文件操作,函数

    一:三级菜单 If len(choice) == continue # 判断输入的是否为空,为空就跳出这次循环进行下次循环, exit(“bye”) :退出程序显示,bye 二:编码 最早的编码是as ...

  8. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  9. Python开发【十一章】:数据库操作Memcache、Redis

    一.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...

  10. python 教程 第三章、 运算符与表达式

    第三章. 运算符与表达式 1)    运算符 + 加 - 减 * 乘 ** 幂 / 除 // 取整除 % 取模 << 左移 >> 右移 & 按位与 | 按位或 ^ 按位 ...

随机推荐

  1. js 的try catch应用

    <script language="javascript"> try { throw new Error(10,"asdasdasd") } cat ...

  2. BZOJ4260 Codechef REBXOR 题解

    题目大意: 有一个长度为n的序列,求1≤l1≤r1<l2≤r2≤n使得(⊕r1i=l1ai)+(⊕r2i=l2ai)最大,输出这个最大值. 思路: 用Trie求出前缀异或和以及后缀异或和,再求出 ...

  3. CentOS6.4 安装nmon

    安装 mkdir /usr/local/nmon cd /usr/local/nmon wget http://sourceforge.net/projects/nmon/files/nmon_lin ...

  4. ACM n-1位数

    n-1位数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的 ...

  5. 应用程序间跳转 (友盟SSO 授权 与系统自带的分享)

    应用程序间跳转的应用场景 使用第三方用户登录,如微信登录,返回用户名和密码 需要用户授权,返回到调用程序,同时返回授权的用户名 应用程序推广,跳转到itunes并显示指定app下载页 第三方支付,跳转 ...

  6. asp.net mvc route 中新发现的小技巧

    在发现这个小技巧之前,我经常被某些问题困扰,我们以博客园为例 1:是分类名称 2:是分类url 3:点击分类,进入的页面,要显示分类的名称 4:点击分类,进入的页面,要用分类相关参数 在日常web的开 ...

  7. 【CodeVS】1993草地排水

    题目描述 Description 在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水 ...

  8. 在Eclipse中使用JSHint检查JavaScript

    之前使用 JSlint 来校验 JavaScript 代码,发现灵活性不够,因此改用 JSHint.按照官方的说法,JSHint 是一个社区驱动(community-driven)的工具,用于检测Ja ...

  9. Func<T, TResult> Delegate

    public delegate TResult Func<in T, out TResult>( T arg ) http://msdn.microsoft.com/en-us/libra ...

  10. 点击页面其它地方隐藏div所想到的jQuery的delegate

    在网页开发的过程中经常遇到的一个需求就是点击一div内部做某些操作,而点击页面其它地方隐藏该div.比如很多导航菜单,当菜单展开的时候,就会要求点击页面其它非菜单地方,隐藏该菜单. 先从最简单的开始, ...