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


    本节完......

  • 相关阅读:
    利用expect实现自动化操作
    svn项目权限控制
    linux jdk环境变量
    Google Authenticator加强ssh安全
    k8s之configmap配置中心
    .NET面试题目二
    .NET面试题目一
    经典.net面试题目(3)
    经典.net面试题目(2)
    经典.net面试题目(1)
  • 原文地址:https://www.cnblogs.com/xinglichao/p/9192158.html
Copyright © 2011-2022 走看看