python中处理字符编码问题

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]#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值