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. Xtrabackup实现数据的备份与恢复

    Xtrabackup介绍 Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁): ...

  2. 好的Qt学习资料

    1.青春不老,奋斗不止!---CSDN博客地址http://blog.csdn.net/liang19890820:

  3. django入门基础

    首先要说的是django与其他的框架不同,django是一个封装的及其完善的框架,我们使用django也不会像之前写学生系统那样,django操作数据库使用自带的ORM来进行操作,Torando与Fl ...

  4. DTD约束

    DTD约束 一,导入DTD方式   二,DTD语法 2)DTD语法 约束标签 <!ELEMENT 元素名称类别>或<!ELEMENT 元素名称(元素内容)> 类别: 空标签: ...

  5. [SinGuLaRiTy] NOIP互测模拟赛

    [SinGuLaRiTy-1045] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 源文件名 输入输出文件 时间限制 内存限制 淘气的cch ...

  6. Java泛型范例

    class Point<T>{ // 此处可以随便写标识符号,T是type的简称 private T var ; // var的类型由T指定,即:由外部指定 public T getVar ...

  7. 【笔记】css 实现宽度自适应屏幕 高度自适应宽度

    如果说宽高自适应屏幕尺寸那么大家可能会想到 div{ width: 100%; height: 100% } 但是如果我要自适应屏幕尺寸的同时还要变成正方形呢?(高度和宽度相等而高度不能写死) 那就要 ...

  8. 通过Azure 存储账号URL鉴别是标准磁盘还是高性能磁盘

    对于不知道虚拟机磁盘是标准磁盘还是高性能磁盘时,我们可以通过nslookup解析存储账号的URL,来判断存储账号的类型,从而得知虚拟磁盘的类型 1.标准存储账号的解析结果,字母"st&quo ...

  9. Python初识-day1

    1.第一个python程序(在pycharm中运行的,感觉还不错) 注释: 当行注释:#被注释内容 多行注释:'''  被注释内容 ''' 2.变量 (1) 自己理解的定义(仅供参考): 为了存储数据 ...

  10. JSP内置对象值out对象及其它的一些常见方法

    out对象: out对象是jspWriter类的实例,是向客户端输出内容常用的对象. 常用方法如下: void println() 向客户端打印字符串 void clear() 清除缓冲区的内容,如果 ...