关于编码问题的理解(python)

1 字符编码简介

1.1 ASCII

ASCII:AmericanStandard Code for Information Interchange。

 计算机是美国人发明的,因此最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母a的编码是97。

  ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。

  全世界有上百种语言,日文编到Shift_JIS里,韩文编到Euc-kr里,各国有各国的标准,就不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

1.2 Unicode的编码和解码

 Unicode(万国码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

 在文字处理方面,统一码为每一个字符而非字形定义唯一的代码(即一个整数)。换句话说,统一码以一种抽象的方式(即数字)来处理字符,并将视觉上的演绎工作(例如字体大小、外观形状、字体形态、文体等)留给其他软件来处理,例如网页浏览器或是文字处理器。

 做个解释:Unicode码是一个字符集,规定了某个数字对应唯一的字符。 对我们人类来说来说Unicode只是一串数字,谁知道这串数字代表什么呢?我们知道‘\\u4e2d’unicode码对应的就是某个未知字符。但是怎样从数字显示出汉字呢?不同的编码使用不同的存储方式来将对应的字符画出来,让我们来看清楚数字对应的原来是中文“汉”。

 

 

import codecs
print (u'汉'.encode('unicode-escape'))
# 得到的结果是\\u6c49
print (ord(u'汉'))
# 得到结果是27721
print(format(27721,'x'))
# 将结果按照十六进制转化得到结果是6c49
print ("\u6c49")
# 得到的结果是"汉"
print ( "\\u{}".format(format(27721, 'x')))
# 得到的结果是\\u6c49
print (0x6c49)
# 得到结果是27721
a="\\u{}".format(format(27721, 'x'))
print (codecs.decode(a,'unicode_escape'))
# 得到结果是"汉"
print (codecs.decode(a,'unicode_escape'))
# 得到结果是"汉"

 

 Unicode只是一套编码系统,包含所有字符集,却并不规定编码后的二进制代码如何存储。

 

 那么将Unicode字符串转换为特定字符编码(ASCII、UTF-8、GBK)对应的字节串的过程和规则就是编码。特定字符编码(ASCII、UTF-8、GBK&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值