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) 运算符 + 加 - 减 * 乘 ** 幂 / 除 // 取整除 % 取模 << 左移 >> 右移 & 按位与 | 按位或 ^ 按位 ...
随机推荐
- Apache日志详解
在渗透测试的工作中,WEB网站的日志是非常重要的,今天总结了一些关于调配Apache日志的一些东西. 0x00 Apache日志文件名称及路径介绍 我们安装好Apache后,Apache的配置文件(h ...
- Git .gitignore中已添加文件路径,但仍未被忽略
当文件之前已经被提交到仓库后,后面即使将文件路径添加到 .gitignore ,使用 git status 命令,依然会看到文件被修改. $ git status 位于分支 master 您的分支与上 ...
- 使用INDY解决BASE64回车换行问题
使用INDY解决BASE64回车换行问题 使用DELPHI EncodeStream(),对流数据进行BASE64编译以后,每隔75个字符,就会添加回车换行符(#$D#$A),这会造成许多问题. 网上 ...
- hibernate的各种查询
Hibernate Query Language(HQL)Criteria QueryNative SQL下面对其分别进行解释select子句:有时并不需要取得对象的所有属性,这时可以使用select ...
- Tomcat中配置URIEncoding="UTF-8"来处理中文的处理
Tomcat中配置URIEncoding="UTF-8"来处理中文的处理 打开 server.xml 文件,更改两个地方. 配置一:添加 URIEncoding="UTF ...
- VUE el-input正则验证
①只能输入大于0的整数 check(value) { let reg = /^[-]\d*$/; var _this = this; if (value) { if (new RegExp(reg). ...
- Git放弃修改
Stage之前放弃修改 如果做了修改,还没有stage(add),使用 git status 可以查看所有的改动: 修改:modified 删除:deleted 添加:Untracked 想要放弃修改 ...
- SQL-W3School-函数:SQL SUM() 函数
ylbtech-SQL-W3School-函数:SQL SUM() 函数 1.返回顶部 1. SUM() 函数 SUM 函数返回数值列的总数(总额). SQL SUM() 语法 SELECT SUM( ...
- 123467123456#1#-----com.twoapp.DaDiShuGame01--前拼后广--现实打地鼠游戏jiemei
com.twoapp.DaDiShuGame01--前拼后广--现实打地鼠游戏jiemei
- java大文件下载+断点续传
java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路:1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操 ...