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. DP入门

    数塔HDU2084 #include <iostream> #include <algorithm> #include <cstdio> #include < ...

  2. Arduino 开源库 u8glib2 之 图标显示【原创】

    Arduino 开源库 u8glib2 研究之 图标显示                -----------------关于drawXBM drawXBMP函数使用的研究 因为心血来潮,近来想做一个 ...

  3. TI-RTOS 控制LED灯

    TI将FreeRtos放在自家芯片上,于是得到了TI-RTOS,两者的区别我还不太清楚,近日因为项目需要,开始试用TI-RTOS,先来一个点灯的实验吧,算是 hello world. 这次手上的板子是 ...

  4. 解析Python中的yield关键字

    前言 python中有一个非常有用的语法叫做生成器,所利用到的关键字就是yield.有效利用生成器这个工具可以有效地节约系统资源,避免不必要的内存占用. 一段代码 def fun(): for i i ...

  5. chorme调试Paused in debugger问题解决

    最近出现的问题,使用chorme调试代码总是这个状态(Paused in debugger[debug的时候暂停了]): 一刷新就这样,非常的不舒服.当然你可以选择多按几次F8跳出,下面提供几种方式解 ...

  6. python对象的基本操作代码

    基础: #对象.方法() # a=1 # b=a # a=2 # # _a=2423 # # print(a) # print(b) # # print(False and False) # prin ...

  7. 科普:String hashCode 方法为什么选择数字31作为乘子

    1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法.然后大致看了一下 hashCode 的实现,发现并不是很复杂.但是我从源码中发现了一个奇怪的数字,也就是本文的主 ...

  8. C++异常层次结构

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class MyArray { publi ...

  9. spring 事务隔离级别配置

    声明式的事务处理中,要配置一个切面,即一组方法,如 其中就用到了propagation,表示打算对这些方法怎么使用事务,是用还是不用,其中propagation有七种配置,REQUIRED.SUPPO ...

  10. winform程序压缩文件上传,服务器端asp.net mvc进行接收解压

    期间编程没什么难度,唯一可能忽略导致结果失败是asp.net  mvc配置 对于压缩文件大的话,需要配置mvc的最大接收量: <system.web> <httpRuntime ma ...