zoukankan      html  css  js  c++  java
  • decode,encode的用法

    python内部的字符串一般都是 Unicode编码。代码中字符串的默认编码与代码文件本身的编码是一致的。所以要做一些编码转换通常是要以Unicode作为中间编码进行转换的,即先将其他编码的字符串解码(decode)成 Unicode,再从 Unicode编码(encode)成另一种编码。

    • decode 的作用是将其他编码的字符串转换成 Unicode 编码,eg name.decode(“GB2312”),表示将GB2312编码的字符串name转换成Unicode编码
    • encode 的作用是将Unicode编码转换成其他编码的字符串,eg name.encode(”GB2312“),表示将unicode编码的字符串name转换成GB2312编码

    所以在进行编码转换的时候必须先知道 name 是那种编码,然后 decode 成 Unicode 编码,最后载 encode 成需要编码的编码。当然了,如果 name 已经就是 Unicode 编码了,那么就不需要进行 decode 进行解码转换了,直接用 encode 就可以编码成你所需要的编码。值得注意的是:对 Unicode 进行编码和对 str 进行编码都是错误的。

    eg:
    由于内置函数 open() 打开文件时,read() 读取的是 str,读取后需要使用正确的编码格式进行 decode()。write() 写入时,如果参数是 Unicode,则需要使用你希望写入的编码进行 encode(),如果是其他编码格式的 str,则需要先用该 str 的编码进行 decode(),转成 Unicode 后再使用写入的编码进行 encode()。如果直接将 Unicode 作为参数传入 write() ,python 将先使用源代码文件声明的字符编码进行编码然后写入。

    1. # coding: UTF-8
    2.  
    3. fp1 = open('test.txt', 'r')
    4. info1 = fp1.read()
    5. # 已知是 GBK 编码,解码成 Unicode
    6. tmp = info1.decode('GBK')
    7.  
    8. fp2 = open('test.txt', 'w')
    9. # 编码成 UTF-8 编码的 str
    10. info2 = tmp.encode('UTF-8')
    11. fp2.write(info2)
    12. fp2.close()
    13. 先知道info1是字符串,其编码为GBK,将其解码成unicode.存在tmp中。再将其编码成utf-8,存在info2中。这样写入fp2文件中的内容就是utf-8格式的了。那么能保证fp2中的内容编码一致,都是utf-8
    14. utf-8也能显示中文。它是可变长的编码方式,可以使用 1~4 个字节表示一个字符,可根据不同的符号而变化字节长度。
    15. python3中默认文件为utf-8格式。字符串不需使用.decode()。其作为unicode编码。可以直接使用encode编码为其他。
    16. 获取系统默认编码
      1. import sys
      2. print sys.getdefaultencoding()
  • 相关阅读:
    小码哥IOS大神班11期 大神班
    最近整理的一些前端面试题
    emm, flutter来了, 对比下 RN?
    爱Pia戏服务协议
    linux cent下redis安装、密码设置、开机启动服务
    mysqld 不定时挂掉,使用定时任务cron检测到挂掉后自动重启mysql
    《结对-结对编项目作业名称-需求分析》
    结对编程
    课堂作业第0周
    App Distribution Guide (二)
  • 原文地址:https://www.cnblogs.com/gwj99/p/7574918.html
Copyright © 2011-2022 走看看