码迷,mamicode.com
首页 > 编程语言 > 详细

探究 encode 和 decode 的使用问题(Python)

时间:2018-06-17 20:53:11      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:分享   编码   等等   保存文件   字节   操作   color   出现   示例   


很多时候在写Python程序的时候都要在头部添加这样一行代码

#coding: utf-8

或者是这样

# -*- coding:utf-8 -*-

等等

这行代码的意思就是设定同一编码格式为utf-8

计算机中存储数据的编码方式多种多样, 常用的有 unicode, utf-8, gbk, 等等

在Windows系统下,文本文件默认保存的格式应该是gbk

在以一种编码格式保存文件时,应该使用相同的编码进行解析此文件, 不然可能会出现乱码情况


今天就是想记录一下我在写Python程序时,在解析字符串字符串时何时使用decode, 何时使用encode

通常从非unicode编码转换为unicode编码使用decode(解码),相反从unicode编码转换为非unicode编码使用encode(编码)

#coding: utf-8

L = [你好]
print L  

输出

技术分享图片

现在是utf-8编码, 一个汉字占3个字节

使用decode进行解码,将 “你好” 的编码转换为unicode

#coding: utf-8

L = [你好]
print [L[0].decode(utf-8)] 

输出

技术分享图片

可以看到成功转化为unicode编码, 并且一个汉字占2个字节

那我现在想让utf-8编码的 “你好” 转换为gbk该如何操作呢?

这样试一下

#coding: utf-8

L = [你好]
print [L[0].encode(gbk)]  #错误示例

出现了错误

技术分享图片

正确的方式就是先将 utf-8 使用decode转换为 unicode , 在将 unicode 使用encode转换为想要的编码gbk

#coding: utf-8

L = [你好]
print [L[-1].decode(utf-8).encode(gbk)]   # utf-8 -> unicode -> gbk

输出

技术分享图片

成功转化为gbk编码, 并且一个汉字占2个字节


总结

(非unicode编码).decode(‘非unicode‘)     转换为unicode

(unicode编码).encode(‘非unicode‘)        转换为非unicode

如果想要从一种非unicode编码转换为另外一种非unicode编码, 需要借助unicode作为跳板先进行decode, 再进行encode


本节完......

 

探究 encode 和 decode 的使用问题(Python)

标签:分享   编码   等等   保存文件   字节   操作   color   出现   示例   

原文地址:https://www.cnblogs.com/xinglichao/p/9192158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!