bytesstr与unicode

Posted walthwang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bytesstr与unicode相关的知识,希望对你有一定的参考价值。

1、Python3字符序列的类型

  bytes -> 原始的8位值(既字节)

  str -> Unicode字符

 

2、Python2字符序列的类型

  str -> 原始的8位值(既字节)

  unicode -> Unicode字符

即Python3的bytes对应Python2的str,而Python3的str对应Python2的unicode

 

写代码的时候不要对字符编码做任何的假设。

编写两个辅助函数来进行转换。

 

接受str或bytes,总是返回str:

def to_str(bytes_or_str):
    if isinstance(bytes_or_str, bytes):
        value = bytes_or_str.decode(utf-8)
    else:
        value = bytes_or_str
    return value

 

接受str或bytes,并总是返回bytes:

def to_bytes(bytes_or_str):
    if isinstance(bytes_or_str, str):
        value = bytes_or_str.encode(utf-8)
    else:
        value = bytes_or_str
    return value

 

3、在Python3中通过内置的open函数获取文件句柄会默认使用utf-8编码格式来操作文件

如果要写入二进制数据,把encoding参数设为b

按下面的方式来使用open函数

with open(path/filename, wb) as f:
    do something

(读取文件的时候也会有同样的问题,这时候使用‘rb‘)

以上是关于bytesstr与unicode的主要内容,如果未能解决你的问题,请参考以下文章

Node.js与HTTP响应主体的unicode问题

php函数返回意外 (可能是unicode或字节码引起的)

Unicode和其他编码兼容性

Unicode字符列表的代码显示与描述

windows 编程 —— 宽字符集 与 Unicode

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途