Py3编码解码
 
写的不好请谅解,有问题欢迎指出.
 
python2.x中的解决方案(图片来源于网络)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : "Wjl"
# @Date : 2017/11/24
# @Time : 15:06
# @SoftWare : PyCharm
# @File : 编码解码.py """
Python2.x 中默认编码是Ascii,所以想写中文必须在开头声明
# -*- coding: utf-8 -*-
否则就不支持中文
或者利用如下的方法来解码
"""
str1 = '测试'
# 将utf-8解码成unicode
str1_to_unicode = str1.decode('utf-8') # 注意,这里这个utf-8是原编码
# 再将unicode编码成gbk
unicode_to_gbk = str1_to_unicode.encode('gbk')
print(str1)
print(str1_to_unicode)
print(unicode_to_gbk) """
总结: 所有的编码想互相转换,必须先decode成unicode,然后才能encode到指定编码
为什么必须要先decode? 因为unicode是万国码,什么语言都支持,相当于是其他编码的父类
父类派生了所有的儿子,你不能从儿子变成另一个儿子.因为你不了解另一个儿子的构造,
而父亲知道(怎么有点邪恶的感觉),所以你必须先decode成unicode,然后才能encode到其他编码。
"""
 
python3.x中字符的默认编码是Unicode,文件默认编码是utf-8,也就是说在python3中你不需要再声明: # -*- coding: utf-8 -*- 这句话了。
虽然文件编码是utf-8,但是字符的编码都是Unicode。
#!/usr/bin/env python
# @Author : "Wjl"
# @Date : 2017/11/24
# @Time : 15:06
# @SoftWare : PyCharm
# @File : 编码解码.py s = '测试字符串'
s_to_gbk = s.encode('gbk')
print(s)
"""
在python3里encode会在编码的同时会把中文字符转成bytes类型,所以下面打印会出现
b'\xb2\xe2\xca\xd4\xd7\xd6\xb7\xfb\xb4\xae'
"""
print(s_to_gbk) # 想要看见怎么办?
# 只能把它再转回去
print(s_to_gbk.decode('gbk')) """
那你说,这不是多此一举吗?
错! 这种形式就让我们的编码灵活,当我们想要其他编码的时候encode即可,需要解码是decode即可
而不需要像PY2一样先decode到unicode然后再encode,PY3可以直接encode。 而且py3默认在编码时会给你做成butes类型,这个类型很有用,在某些函数传递参数时它们接收的就是这个类型的参数
而你编码后就可以直接将这个类型传递给需要的函数。 举个列子:
client发送数据给server端 py2:
如果我encode时gbk,那么发送给server端,server端如果是utf8,就可能出现乱码 py3
我encode是gbk,发送给server端是一个bytes类型的数据,那么server端想看就必须解码。 所以py3好处就是一旦编码就必须解码,强制你解码,就减少了乱码问题,而py2则不会
"""
 
 
 
 

Py3编码解码的更多相关文章

  1. C# base 64图片编码解码

    使用WinForm实现了图片base64编码解码的 效果图: 示例base 64编码字符串: /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKD ...

  2. java中文乱码解决之道(五)-----java是如何编码解码的

    在上篇博客中LZ阐述了java各个渠道转码的过程,阐述了java在运行过程中那些步骤在进行转码,在这些转码过程中如果一处出现问题就很有可能会产生乱码!下面LZ就讲述java在转码过程中是如何来进行编码 ...

  3. java中文乱码解决之道(六)-----javaWeb中的编码解码

    在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言, ...

  4. Unicode编码解码在线转换工具

    // Unicode编码解码在线转换工具 Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standar ...

  5. .NET编码解码(HtmlEncode与HtmlEncode)

    编码代码: System.Web.HttpUtility.HtmlEncode("<a href=\"http://hovertree.com/\">何问起& ...

  6. sed处理url编码解码=== web日志的url处理

    URL 编码/解码方法(linux  shell实现),方法如下: 1.编码的两种方法: admin@~ 11:14:29>echo '手机' | tr -d '\n' | xxd -plain ...

  7. ASP.NET中Url编码解码

    今天遇到Url编码解码的问题,纠结了一天的时间,结果上网一查才发现太二了我们. 同事写的代码把url用HttpUtility.UrlEncode编码和解码了,本地测试没有问题,部署到服务器上就提示转码 ...

  8. C++ Base64 编码 解码

    C++实现 base64 字符串编码解码(GCC编译). /** * @brief C++ base64 编解码 * @author wid * @date 2013-20-25 * * @note ...

  9. 理解netty对protocol buffers的编码解码

    一,netty+protocol buffers简要说明 Netty是业界最流行的NIO框架之一优点:1)API使用简单,开发门槛低:2)功能强大,预置了多种编解码功能,支持多种主流协议:3)定制能力 ...

随机推荐

  1. C++ STL之min_element()与max_element()(取容器中的最大最小值)

    min_element()和max_element 头文件:#include<algorithm> 作用:返回容器中最小值和最大值.max_element(first,end,cmp);其 ...

  2. centos7下安装mysql5.7.17

    约定:本文基于Centos7,Mysql5.7.17,经过博主多次测试成功 1.下载mysql.tar.gz 官网下载MySQL安装包,Linux-Generic 64位(根据系统选择64or32) ...

  3. ECMAScript 5 新特性

    Strict模式 开启strict: 在文件头部,或者在一个function头部内,添加‘use strict’或者“use strict”. Strict模式的限制,以及违反时出现的异常: 新定制了 ...

  4. Oracle_SQL99_连接查询

    Oracle_SQL99_连接查询 交叉连接 cross join   --交叉连接 cross join --作用:产生两个表的笛卡尔积 select * from emp cross join d ...

  5. jdbc、Mybatis插入数据主键回显的实现方法

    插入数据的时候,往往需要获取主键值.但是有时候主键是自增长的那么,就不太适用手动添加主键值了,此时需要一种可以回显主键参数的方法, 下面以jdbc.mybatis的实现举例 此时使用的是jdbc的话或 ...

  6. 通过Xshell如何从Linux服务器下载文件(亲测可行)

    到网上下载lrzsz安装包,这里以lrzsz-0.12.20.tar.gz为例 2 打开终端 cd 到安装包所在目录 tar zxvf lrzsz-0.12.20.tar.gz 解压安装包 3 进入解 ...

  7. css中,如何设置前景色的透明度?

    谢谢 我等待的他 | 浏览 255446 次 推荐于2016-01-13 12:27:03 最佳答案 css控制透明度倒不麻烦. filter:alpha(opacity=50); -moz-opac ...

  8. html_栏目下拉

    ========================================================= =================[ 下拉栏目菜单 ]=============== ...

  9. Python 3 利用 Dlib 19.7 和 sklearn机器学习模型 实现人脸微笑检测

    0.引言  利用机器学习的方法训练微笑检测模型,给一张人脸照片,判断是否微笑:   使用的数据集中69张没笑脸,65张有笑脸,训练结果识别精度在95%附近: 效果: 图1 示例效果 工程利用pytho ...

  10. 为什么要进行URL编码

    我们都知道Http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割.如"?name1=value1&a ...