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


    本节完......

  • 相关阅读:
    网络基础知识-TCP/IP协议各层详解
    MySQL及其图形界面navicat的安装
    Python 浅谈编程规范和软件开发目录规范的重要性
    python 浅析模块,包及其相关用法
    spring batch中MyBatisPagingItemReader分页使用介绍
    eclipse中git插件使用
    oracle中查找某用户执行某张表的操作操作记录
    redis集群主流架构方案分析
    消息队列常见的 5 个应用场景
    Kafka vs RocketMQ——单机系统可靠性
  • 原文地址:https://www.cnblogs.com/xinglichao/p/9192158.html
Copyright © 2011-2022 走看看