zoukankan      html  css  js  c++  java
  • 探究 encode 和 decode 的使用问题(Python)


    很多时候在写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


    本节完......

  • 相关阅读:
    正则表达式基础
    js正则:零宽断言
    IE读取并显示本地图像文件的方法
    转:FileReader详解与实例---读取并显示图像文件
    mysql基础(mysql数据库导入到处) 很基础很实用
    如何禁止页面滚动
    转:字符编码到底是怎样的 有空看
    自己写的一个简单的Tab类
    mysql学习总结
    mysqld守护进程
  • 原文地址:https://www.cnblogs.com/xinglichao/p/9192158.html
Copyright © 2011-2022 走看看