一、字符编码与转码

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. BZOJ4631 : 踩气球

    将所有盒子插入链表,每当一个盒子变空时,从链表里删去它. 查一下它的前驱后继$pre,nxt$,那么$[pre+1,nxt-1]$都是空的. 每次对于$[A,B]$这段都为空,对小朋友按$R$维护线段 ...

  2. js 的try catch应用

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

  3. 【BZOJ】2693: jzptab

    http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题意:求$\sum_{i=1}^{n} \sum_{j=1}^{m} lcm(i, j)$, ...

  4. 通过/etc/rc.local实现开机自动拉起服务

    添加服务到/etc/rc.local 如自动拉起apache服务: /etc/rc.local: #!/bin/sh # # This script will be executed *after* ...

  5. CentOS 6.7安装Mysql 5.7

    Step1: 检测系统是否自带安装mysql # yum list installed | grep mysql Step2: 删除系统自带的mysql及其依赖命令: # yum -y remove ...

  6. 关于Go,你可能不注意的7件事(转的)

    http://tonybai.com/2015/09/17/7-things-you-may-not-pay-attation-to-in-go/ code https://github.com/bi ...

  7. 转载:C# this.invoke()作用 多线程操作UI 理解二

    Invoke()的作用是:在应用程序的主线程上执行指定的委托.一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke(); //测试的窗体 public class ...

  8. light oj 1047 - Neighbor House 动态规划

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730#problem/C 题目: Description The peopl ...

  9. 用clip剪裁实现半圆

    定义和用法 clip 属性剪裁绝对定位元素. 说明 这个属性用于定义一个剪裁矩形.对于一个绝对定义元素,在这个矩形内的内容才可见.出了这个剪裁区域的内容会根据 overflow 的值来处理.剪裁区域可 ...

  10. 内置函数----整理、例题 、xmin

    -----------数值函数 ---绝对值 select abs(-123) from dual; --求模 select mod (12,5) from dual; --取整 --上限值 sele ...