Python开发【第三章】:编码转换
一、字符编码与转码
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开发-第三章
# 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇
原文:ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇 第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列 ...
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇
原文:ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇 第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是 ...
- Python开发【第一章】:Python简介和入门
Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承. ...
- Python开发【第一章】:简介和入门
Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承. ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- Android系统移植与驱动开发--第三章 Git使用入门及在学习中有感
第三章 Git使用入门 使用Git的目的是减少各种版本的Linux的压缩大小,提供源代码在Linux上进行编译. 在这一个章节中,其实就是关键步骤的操作,虽然Git与我们学习的android没有很大的 ...
- python模块之codecs: 自然语言编码转换
python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理. 有一点需要清楚的是,当python要做编码转换的时候,会借助于内部 ...
- Python开发GUI实战:图片转换素描画工具!
奋斗没有终点 好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己 ...
- python 教程 第三章、 运算符与表达式
第三章. 运算符与表达式 1) 运算符 + 加 - 减 * 乘 ** 幂 / 除 // 取整除 % 取模 << 左移 >> 右移 & 按位与 | 按位或 ^ 按位 ...
随机推荐
- dubbo+zookeeper搭建时报错java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy
说一下我的环境: jdk1.8 dubbo2.6.1 zookeeper3.4.10 maven3.3.9 搭建demo时报错:java.lang.NoClassDefFoundError: org/ ...
- 2018-2019-2 网络对抗技术 20165311 Exp 8 Web基础
2018-2019-2 网络对抗技术 20165311 Exp 8 Web基础 基础问题回答 实践过程记录 1.Web前端:HTML 2.Web前端:javascipt 3.Web后端:MySQL基础 ...
- git补充(命令)转自https://github.com/Wasdns/github-example-repo
在使用命令行进行提交时,通常使用git commit -m '注释信息'来填写commit注释信息,但是-m参数适合单行注释,对于多行的commit注释来说是不合适的.这里推荐使用git commit ...
- oracle sql insert插入字符&
最近遇到insert 语句插入&字符报弹出框,如下: sql: insert into test_ldl001 (ID, NAME) values (', '/test/test.do?act ...
- js回车键事件
js回车键事件 一.总结 一句话总结: $("#focus").keypress(function(event){if(event.which === 13) { /*点击回车要执 ...
- CVE-2019-11477:Linux 内核中TCP协议栈整数溢出漏洞详细分析 代码卫士 今天
CVE-2019-11477:Linux 内核中TCP协议栈整数溢出漏洞详细分析 代码卫士 今天
- android studio: 让项目通过阿里云 maven jcenter 下载依赖资源
打开项目根目录下的 build.gradle(Project:项目名称一级的gradle),如下所示添加阿里 maven 库地址: // Top-level build file where you ...
- vue开发环境、正式环境的配置及原理
修改prod.env.js里的内容,修改后的内容如下: 'use strict' module.exports = { NODE_ENV: '"production"', EVN_ ...
- Civil 3D百度云地址
Civil 3D 2018百度云地址 https://pan.baidu.com/s/1edeVhG Civil 3D 2019注册机百度云地址 链接: https://pan.baidu.com/s ...
- Git——起步(待续)
原文链接:Getting Started with Git