python学习-字符和编码

一、ASCII、Unicode、UTF-8的由来和关系

1、由来:因为计算机只识别数字,所以计算机的发明国家美国对大小写英文字母、数字以及一些特殊符号进行了编码,共127个,即ASCII编码表。

2、发展:因为ASCII编码不支持中文,所以中国制定了GB1312编码,韩国制定了Euc-kr、日本制定了Shift-JIS...

3、整合:世界上有上百种语言,使用各自的编码最终的结果就是乱码。因此Unicode编码出现了,Unicode支持所有的语言。也是计算机使用的编码。

4、优化:Unicode虽然支持所有的语言,解决了乱码问题,但是也有不足。无论是英文、中文字符,在Unicode编码下所占的存储空间都是2个字节(1个字节=8个比特,也就是十进制的255,二进制的11111111),而实际上,英文字符仅需要1个字节的存储空间,Unicode采取的方式是在二进制前填充0。例如:

字符"A"在ASCII编码中是65,二进制表示是1000001,而使用Unicode则表示为:00000000 01000001。这样,相当于占用了2个字节的存储空间。所以,utf-8出现了。utf-8把字符按不同的大小编码成1-6个字节,英文一般是1个,中文是3个字节,个别生辟字占用4-6个。

5、注意:计算机内存中统一使用Unicode,当需要保存到硬盘或者输出时,则转化为UTF-8。

二、学习

1、Unicode的ord()和chr()方法,#号后为输出。

ord("A") #65
ord("1") #49
ord("a") #97
ord("中")#20013
chr(65) #A
chr(20013) #中

2、字符转二进制

name = "A"
for i in name:
    j = bytes(i,encoding = "utf-8")
    print("字符\"%s\"用二进制输出为:"%i)
    for m in j:
        n = bin(m)
        print(n,end = " ")
    print()

3、十进制转二进制

l = []
num =19
def a(num):
    if num < 0 :
        return "-"+a(abs(num))
    while True:
        num,r = divmod(num,2)
        l.append(str(r))
        print(l)
        if num == 0:
            return "".join(l[::-1])

4、对数字进行36进制内的转换

def baseN(num, b):
  return ((num == 0) and "0") or (baseN(num // b, b).lstrip("0") +"0123456789abcdefghijklmnopqrstuvwxyz"[num % b])
baseN(2,16)

5、占位符%和format()的使用

#占位符,等同于format()
print("%2d-%03d"%(3,10))
# 3-010
#3前面有空格,因为未指定补充值
print("%3d-%03d"%(3,10))
#           3-010
#  %3d,在值前面生成2个空格
#  %03d,在个十位数前面填充0,显示为3位数
print("%d-%d"%(3,1))
#3-1
print("%.1f"%3)
#3.0
print("%d%%"%7)
#7%

6、转义符\和r

#转义符\,在单引号或者双引号内需要使用特殊符号时,在符号前添加转义符\
print(‘I\‘m \"zhangchun1\"‘)
# I‘m "zhangchun1"
print("I\‘m \"zhangchun\"")
# I‘m "zhangchun"
# \n与\t 代表换行和制表符,
print("I\‘m \n\"zhangchun\"")
print("I\‘m \t\"zhangchun\"")
# I‘m
# "zhangchun"
# I‘m     "zhangchun"
#转义r,使用r时,则""内部默认不转义
print(r"I\‘m \t\"zhangchun\"")
# I\‘m \t\"zhangchun\"

 

 

原文地址:https://www.cnblogs.com/zc-beyond/p/11071001.html

时间: 2024-10-18 20:13:33

python学习-字符和编码的相关文章

Python学习 -01- 字符串和编码

字符串和编码对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:已掌握encode()和decode() 文件开头声明#!/usr/bin/env python3# -*- coding: utf-8 -*- %s和%d和%fformat()方法 原文地址:https://www.cnblogs.com/yesefujiang/p/10620538.html

Python 之 字符转编码操作

字符转编码操作 # -*- coding:utf-8 -*- import sys print(sys.getdefaultencoding()) s = "你好" python2写法,将s转换成"gbk" s_to_gbk = s.decode("utf-8").encode("gbk") #1.在Python2下,所有字符编码为"ascii"#2.当文件头声明定义为:utf-8#3.将s转换gbk,首先

Python学习-字符编码的理解

Unicode编码和ASCII码两者都是机器能够理解的编码,你就是说出现一个码,计算机知道它对应哪种符号.因为这种编码形式将不同的字符全都和电平的高低电位联系在一起. Unicode,这种编码是全球通用的编码,就是说所有计算机都包含的编码.包含 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),这三种形式. 也就是说utf-8,就是一种Unicode的编码. utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间.

Python学习日记(五) 编码基础

初始编码 ASCII最开始为7位,一共128字符.最后确定8位,一共256个字符,最左边的为拓展位,为以后的开发做准备. ASCII码的最左边的一位为0. 基本换算:8位(bit) = 1字节(byte) 1024byte = 1 KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 电脑的传输还有存储实际上都是以二进制的形式进行的. Unicode:美国最初是使用ASCII编码,后来为了解决全球化的文字问题,创建了万国码(Unicode) 开端: 一个中文最初给两

Python中字符的编码与解码

1 文本和字节序列 我们都知道字符串,就是由一些字符组成的序列构成串,那么字符又是什么呢?计算机只能识别二进制的东西,那么计算机又为什么会显示我们的汉字,或者是某个字母呢? 由于最早发明使用计算机是美国人,他们为了解决了英语如何在电脑上显示,就制定了一套标准:ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码),主要用于显示现代英语和其他西欧语言.到目前为止共定义了128个字符,从0-127的二进制数分别

python学习DAY7(编码转码)

Unicode默认中英文为2个字节,16位 Unicode相当于编码的转码中介 ASCII不可存中文字符 utf-8(可变长):英文字符按照ASCII码 中文字符三个字节 #打印系统默认编码 import sys print(sys.getdefaultencoding()) ------------------------------------------- python2中: #若UTF-8转为GBK 默认编码为unicode 则需要进行解码操作,先解成UNICODE(可显示中文),再编码

python学习 —— 字符画

代码: import os from PIL import Image WIDTH = int(250) HEIGHT = int(250/2) ascii_char = list('[email protected]%8&WM#*/\|()1{}[.?-_+~<>i!lI;:,"^`\' ') # 将256灰度映射到70个字符上 def rgb2char(r,g,b,alpha = 256): if alpha == 0: return ' ' length = len(a

python学习第四天 --字符编码 与格式化

字符编码 与格式化 第三天已经知道了字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节.比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295. 由于计算机是美国人发明的,因此,

python学习之字符编码

字符串涉及到编码:ascii gbk gb2312 unicode uft-8 对于英文字符ASCII(可以看成utf-8的子集)就可以了,中文用gbk/gb2312; unicode:世界统一的计算机系统编码(内存中),但是存储时比较浪费空间,所以存到硬盘或者输出查看时用uft-8.也就是说用记事本打开读时或浏览网页时都是Unicode->tuf-8,因为记事本和浏览器服务器系统是Unicode类型的 uft-8:ptthon保存源代码时,就需要务必指定保存为UTF-8编码.在程序开头申明了U