Files
python3-cookbook/basic/mystring/str_to_bytes.py
2015-01-20 10:02:48 +08:00

68 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
-------------------------------------------------------------------------------
Function:
【整理】Python中字符编码的总结和对比
Python 3.x中直接输出的字符串被单引号或双引号括起来的就已经是Unicode类型的str了。
当然,有一些前提:
1. Python文件开始已经声明对应的编码
2. Python文件本身的确是使用该编码保存的
3. 两者的编码类型要一样比如都是UTF-8或者都是GBK等
这样Python解析器才能正确的把你所输出字符串解析为对应的unicode的str
Author: Xiong Neng
Verison: 2014-09-25
-------------------------------------------------------------------------------
"""
def str_to_bytes():
"""Demo Python 3.x (unicode) str to bytes
"""
zhcn_unicode = """
1.此处的Python 3.x中默认字符串的写法就已经是unicode类型的字符串了。
2.当然,还是有一点前提的,那就是:
(1)此处python文件所指定的编码类型
(2)要和你当前python文件实际所采用的编码类型要匹配和一致
即此处两者均是UTF-8所以Python解析器才能正确的将我们此处所输入的UTF-8的中文字符
正确地解码为对应的Unicode字符串的
3.接下来将要演示的是,打印对于的此处字符的类型;
然后再直接输出显示到windows的GBK编码的cmd中
"""
print("type(zhcn_unicode)=", type(zhcn_unicode)) # type(zhcn_unicode)= <class 'str'>
print(zhcn_unicode)
zhcn_gbk_bytes = zhcn_unicode.encode("GBK")
# print("You should see these zh-CN bytes in windows cmd normally,"
# " which begin with b preffix: zhcnGbkBytes=%s" % (zhcn_gbk_bytes))
print(''.encode('UTF-8')) # UTF-8的中文3个字节输出 b'\xe4\xb8\xad'
# You should see these zh-CN bytes in windows cmd normally,
# which begin with b preffix:
# zhcnGbkBytes=b'1.\xb4\xcb\xb4\xa6\xb5 ...... \xc2\xeb\xb5\xc4cmd\xd6\xd0'
def bytes_to_str():
"""Demo Python 3.x bytes to (unicode) str
"""
#此处的bytes只能接受ASCII字符
#想要输入非ASCII的字符则只能通过\xYY的十六进制方式输入其中YY为对应的16进制的值
#此处,我是已经在别处,通过把对应的中文:
#"1.Python 3.x中给字符串前面添加字母b表示是bytes的字符串
# 2.此处之所以可以实现接下来的Python解析器可以正确的将bytes解码为Unicode的str那是因为
# (1)此处python文件所指定的编码类型
# (2)要和你当前python文件实际所采用的编码类型是一致的都是UTF-8
# 3.接下来将要演示的是将此bytes字符串解码为Unicode的str
# 然后在此处的终端windows的默认编码为GBK的cmd中显示出来";
#解析为UTF-8的bytes了所以下面你看到的是解析后的一堆bytes
zhcnBytes = b"1.\xe6\xad\xa4\xe5\xa4\x84\xe7\x9a\x84\xef\xbc\x8cPython 3.x"
print("type(zhcnBytes)=",type(zhcnBytes)) # type(zhcnBytes)= <class 'bytes'>
zhcnUnicodeStr = zhcnBytes.decode("UTF-8")
print("zh-CN unicode str in windows cmd normally: zhcnUnicodeStr=%s"%(zhcnUnicodeStr))
# zh-CN unicode str in windows cmd normally: zhcnUnicodeStr=
# 1.此处的Python 3.x中 ...... 然后再直接输出显示到windows的GBK编码的cmd中
if __name__ == "__main__":
str_to_bytes()