NO.1认识字符编码
GBK
***win默认中文字符编码是:
GBK
Unicode
***(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。兼容GB2312、GBK......***
ASCII
***美国(国家)信息交换标准(代)码,一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符
ASCII(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值。***
Unicode默认两个字节(16)位表示一个中文或者英文;
ascII默认一个字节(8)位表示,只能存英文或特殊字符;
UTF-8((可变长的字符编码)
***EG:原本一个英文文档本来是ASCII做字符编码集,要是用了Unicode则增加了一倍空间,造成了空间的浪费,为了解决这个问题,在Unicode的基础上, 衍生出了Unicode的扩展集 :UTF-8(可变长的字符编码)***
默认:所有的英文字符按ASCII码的形式去存储,所有的中文字符统一是三个字节
字符编码的各种转换
以下图片来自博客:https://www.cnblogs.com/luotianshuai/articles/5735051.html
总结:所有不同编码之间的转换都要经过Unicode来当作媒介
日文的字符要在中国的win上显示或者应用的过程: 先将日文的字符编码转换成Unicode,再由Unicode转换成中文的GBK
python3上默认所有的字符都是Unicode类型
以下小实验以下python3中从UTF-8转成GBK
encode:编码
decode:解码
#-*-coding:utf-8-*-
import sys
print(sys.getdefaultencoding())
[root@localhost mnt]# python -V
Python 3.6.5
[root@localhost mnt]# python test.py
utf-8 #系统做过设置,一般默认是Unicode
[root@localhost mnt]#
在python2版本中默认是ascii
字符转换实验 python2.7环境
python2默认字符集(ascii)转换成unicode-》utf-8类型
#-*- coding:utf-8 -*-
import sys
print(sys.getdefaultencoding()) #打印默认字符编码集
s = '你好'
s_to_unicode = s.decode("utf-8") #转成utf-8(属unicode于)
print(s_to_unicode)
print(type(s_to_unicode)) #打印类型
###########################打印
[root@localhost mnt]# python test.py
ascii
你好
<type 'unicode'>
[root@localhost mnt]#
#把unicode类型转换成gbk类型
#-*- coding:utf-8 -*-
import sys
print(sys.getdefaultencoding())
s = '你好'
s_to_unicode = s.decode("utf-8")
print(s_to_unicode)
print(type(s_to_unicode))
s_to_gbk = s_to_unicode.encode("gbk")
print(s_to_gbk)
[root@localhost mnt]# python test.py
ascii
你好 #CRT设置成GB2312 按说应该设置成默认,因为win默认是GBK字符编码集
[root@localhost mnt]#