原文地址:http://www.crifan.com/summary_python_string_encoding_decoding_difference_and_comparation_python_2_x_str_unicode_vs_python_3_x_bytes_str/
python3.x bytes:
普通字符串加上字母b作为前缀,就是表示bytes字符串了。 需要注意的是:
| bytes->str: 【核心代码逻辑】 1.如果你要写对应的bytes变量,那么需要加上前缀字母b; 注意: 不过要注意的是,只能写英文单词,而不能直接写中文等非ASCII的字符。 如果非要写非ASCII字符,那么只能自己想办法先将其转化为对应某种编码的byte,内部存储的内容,是对应的各个字节,打印出来的效果就是\xYY这种十六进制的值。 其中: 如果把对应的中文转换对特定编码的bytes的16进制值,可以参考下面的"str->bytes"的代码。 2.然后用 bytesVariable.decode("specificEncoding") 去解码为对应的str(即Unicode字符串) 其中:specificEncoding是该bytes的编码。 3.然后你就可以拿着Unicode的str,去做你想要的事情了 比如常见的打印出来看看。 【完整代码】 参见下面的:python_3.x_bytes_to_str.py |
python3.x str:Unicode类型的字符串
Python 3.x中,直接输出的字符串(被单引号或双引号括起来的),就已经是Unicode类型的str了。 当然,有一些前提:
- Python文件开始已经声明对应的编码
- Python文件本身的确是使用该编码保存的
- 两者的编码类型要一样(比如都是UTF-8或者都是GBK等)
这样Python解析器,才能正确的把你所输出字符串,解析为对应的unicode的str | str->bytes: 【核心代码逻辑】 1.默认写出的字符串,已经就是str,即Unicode,的类型了。 或者你之前已经获得了对应的unicode的str了。 注:当然,如果在Python文件中,需要满足下列条件: A。Python文件开始已经声明对应的编码 B。Python文件本身的确是使用该编码保存的 C。两者的编码类型要一样(比如都是UTF-8或者都是GBK等) 2.然后调用 unicodeStr.encode("encodingType") 去编码为对应的字节序列bytes, 3.然后后续再进行相应的你所需要的处理 【完整代码】 参见下面的:python_3.x_str_to_bytes.py |