python编码格式

我们在写代码的时候经常会遇到乱码等问题,其实就是因为编码格式不正确,那我们现在来简单看一下关于编码的相关知识

一、ASCII 码

计算机存储数据是用0、1存储的,为了存储英文字符等,所以出现了一个ASCII编码表,通过这个表就是把对应的英文转换对应为相应的0、1数据存储到计算机,但是英文只有26个字母,中文有6万多汉字,ASCII编码不够,所以根据需要就出现了unicode、utf-8等编码,实际可以理解为它们把全球的文字编码对应到计算机的0、1来存储识别。

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

  • 0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等。通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;

  • ASCII值为 8、9、10 和 13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。

  • 32~126(共95个)是字符(32sp是空格),其中48~57为0到9十个阿拉伯数字;

  • 65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等

Unicode

Unicode是为了解决传统的字符编码的局限而产生的。对世界上大部分的文字系统进行了编码、整理,使电脑可以更方便的处理和展示文字。Unicode采用16位编码空间,每个字符占2个字节。Unicode的实现方式称为Unicode转换格式

Unicode码扩展自ASCII字元集。在严格的ASCII中,每个字元用7位元表示,或者电脑上普遍使用的每字元有8位元宽。而Unicode使用全16位元字元集。这使得Unicode能够表示世界上所有的书写语言中可能用於电脑通讯的字元、象形文字和其他符号。

不同的编码方式会造成乱码问题,Unicode将世界上所有符号都纳入其中。每一个符号都给予一个编码,这样就就解决了乱码问题。Unicode现在的规模可以容纳100多万个符号,每个符号的编码都不一样,例如U+4E0A表示上,U+4E0B表示下,具体的符号对应表可以查看: http://www.chi2ko.com/tool/CJK.htm

UTF-8

UTF全称(Unicode Transformation Format),所以它是一种针对前面提到的Unicode的编码格式,常见的格式就是 UTF-8,还有 UTF-16, UTF-32。

UTF-8 其中的 8 表示的是 8 bit,即Unicode中每8位表示一个字符,UTF-16 和 UTF-32 类似,因为Unicode最多才21位,32位大于21位,所以 UTF-32 的格式就可以表示所有字符对应的Unicode码了,但是呢,32位也就是4字节,让每个字符都占用4字节太费空间了,所以出现了UTF-8和UTF-16。

UTF-8 编码规则如下:

Unicode bit UTF-8 byte
0x0000 - 0x007f 0 - 7 0XXX XXXX 1
0x0080 - 0x07ff 8 - 11 110X XXXX 10XX XXXX 2
0x0800 - 0xffff 12 - 16 1110 XXXX 10XX XXXX 10XX XXXX 3
0x1 0000 - 0x1f ffff 17 - 21 1111 0XXX 10XX XXXX 10XX XXXX 10XX XXXX 4
  • 每个字节中不足8位的,高位(左边)先用0补上,比如 0XXXX XXXX;
  • 超过两字节表示的UTF-8,第一个字节高位添加两个 1 和一个 0,后面的字节高位添加 10;
  • 3字节和4字节同理,几个字节高位就添几个 1 再加上一个 0,其余字节高位添 10;

设置编码格式

Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。解决方法为在文件的开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了。

我们要记住写python程序的时候一般使用utf-8编码格式来存储编码格式,网页里面同样的也声明utf-8即可,utf-8是中文、英文、日文等全球文字都可以使用的编码格式,通用性很强。

在Pycharm 中设置编码格式的步骤:File —> setting —> File Encodings

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69908432/viewspace-2651276/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69908432/viewspace-2651276/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值