我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基础知识:字符编码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基础知识:字符编码

一、字符编码

1、什么实字符编码:将人识别的字符转换成计算机能识别的01,而转换的过程或者规则就是字符编码表。

而这种字符编码表表示了一种对应关系。

2、常用的字符编码表有:ascii、unicode、GBK、Shift_JIS、Euc-kr

3、如何理解字符编码

①、电脑三大核心:cpu -内存-硬盘

②、软件及Python解释器读取文件过程:启动--读取--展示|解释执行

       计算机只认识数字

  很明显,我们平时在使用计算机时,用的都是人类能读懂的字符(用高级语言编程的结果也无非是在文件内写了一堆字符),如何能让计算机读懂人类的字符?

  必须经过一个过程:
  

  字符--------(翻译过程)------->数字

 

 

  这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码

       计算机由美国人发明,最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系。最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号

       

  当然我们编程语言都用英文没问题,ASCII够用,但是在处理数据时,不同的国家有不同的语言,日本人会在自己的程序中加入日文,中国人会加入中文。

  而要表示中文,单拿一个字节表表示一个汉子,是不可能表达完的(连小学生都认识两千多个汉字),解决方法只有一个,就是一个字节用>8位2进制代表,位数越多,代表的变化就多,这样,就可以尽可能多的表达出不通的汉字

  所以中国人规定了自己的标准gb2312编码,规定了包含中文在内的字符->数字的对应关系。

  日本人规定了自己的Shift_JIS编码

  韩国人规定了自己的Euc-kr编码(另外,韩国人说,计算机是他们发明的,要求世界统一用韩国编码,但世界人民没有搭理他们)

  因为此刻的各种标准都只是规定了自己国家的文字在内的字符跟数字的对应关系,如果单纯采用一种国家的编码格式,那么其余国家语言的文字在解析时就会出现乱码

  所以迫切需要一个世界的标准(能包含全世界的语言)于是unicode应运而生

  ascii用1个字节(8位二进制)代表一个字符

  unicode常用2个字节(16位二进制)代表一个字符,生僻字需要用4个字节

  这时候乱码问题消失了,所有的文档我们都使用但是新问题出现了,如果我们的文档通篇都是英文,你用unicode会比ascii耗费多一倍的空间,在存储和传输上十分的低效

  本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间

 

4、字符编码总结:

unicode与utf-8采用的是一张unicode编码表,utf-8是unicode编码表体现方式,变长存储数据
变长优点:(大量数据都是以英文存在,所以utf-8空间更小)传输速度更快

 

二、字符、编码、解码

u' '              Unicode字符串,默认字符

s1 = u'abc你好\n不好'    #\n代表换行符
print(s1)


>>>
abc你好
不好

b' '             字节字符串

s2 = b'abc123\xb7\xb7'
print(s2)


>>>b'abc123\xb7\xb7'

r' '          原义字符串,不对字符串内存做任何操作

s3 = r'abc你好\n不好'
print(s3)

>>>abc你好\n不好       #此时的换行符不起作用,因为原义字符串不做任何操作。

编码encode与解码decode:

编码:我们能看懂的  编给机器 看 的过程

s='123哈哈'
s1=bytes(s,encoding='utf-8')
print(s1)

>>>b'123\xe5\x93\x88\xe5\x93\x88'

#结果解释:这里的\x代表16进制的意思,一个16进制需要占用4个bit,所以2个16进制就是8个bit也就是1个字节(Bytes),所以\xe5代表2个16进制一个字节,\x93、\x88各代表2个16进制,一个字节。后面三个重复,所以用utf-8编码,这里的一个汉字‘哈’占用3个字节。
解码:把机器能看懂的 解释给我们人看的过程

b1= b'\xe4\xbd\xa0\xe5\xa5\xbd'
b2=str(b1,encoding='utf-8')
print(b2)


>>>你好

编码、解码:

将u‘’字符串转成b‘’字符串   编码
u1=u'你好'
b1=u1.encode('utf-8')
print(b1)


>>>b'\xe4\xbd\xa0\xe5\xa5\xbd'
将b‘’字符转换成u‘’字符     解码
b2=b'\xe4\xbd\xa0\xe5\xa5\xbd'
u2=b2.decode('utf-8')
print(u2)

>>>你好

三 、文件操作

待处理

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

基础知识:字符编码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基础知识:字符编码

一、字符编码1、什么实字符编码:将人识别的字符转换成计算机能识别的01,而转换的过程或者规则就是字符编码表。而这种字符编码表表示了一种对应关系。2、常用的字符编码表有:ascii、unicode、GBK、Shift_JIS、Euc-kr3、
2023-01-31

Python基础知识大全:字符编码转换、函数

  字符编码转换  字符编码转换最重要的一点就是,切记unicode是编码之间的中转站,若unicode不是目标编码或者原始编码,那么任何两个编码相互转换都需要经过unicode(见下图)。  需要注意的是,python的默认编码是ASCI
2023-06-02

Python基础知识(六)--字符串

#字符串   #字符串是用固定的str数据类型表示的,用来存放Unicode字符序列  #str数据类型可以用来创建一个字符串对象,参数为空时返回一个空字符串  a = str()  print(a)                    
2023-01-31

python基础之字符编码

一 计算机基础知识 二 文本编辑器存取文件的原理(nodepad++,pycharm,word)#1、打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失#2、要想永久保存,需要点击保
2023-01-30

Python 基础知识之字符串处理

Python字符串处理 字符串输入:my_string = raw_input("please input a word:")字符串判断: (1) 判断是不是纯字母my_string.isalpha()字符串搜索匹配: (1) rere正则
2022-06-04

Python 专题三 字符串的基础知识

在Python中最重要的数据类型包括字符串、列表、元组和字典等.该篇主要讲述Python的字符串基础知识. 一.字符串基础 字符串指一有序的字符序列集合,用单引号、双引号、三重(单双均可)引号引起来.如: s1='www.csdn.NET'
2022-06-04

Java字符编码知识简介(zt)

新一篇: orcle ibatis 中文字符 问题1 基本信息
2023-06-03

Python字符编码知识点有哪些

本篇内容主要讲解“Python字符编码知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python字符编码知识点有哪些”吧!1.字符编码【所谓unicode】unicode是一种类似于
2023-06-02

shell编程基础知识小结

1、文件类型介绍linux系统中主要包括以下七种文件类型: d 目录 - 普通文件 l 符号链接 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 2、正则表达式正则表达式在shell编程中非常重要。 从一个文件或命令输出
2022-06-04

Python基础知识之2——字典

字典是什么?字典是另外一个可变的数据结构,且可存储任意类型对象,比如字符串、数字、列表等。字典是由关键字和值两部分组成,也就是 key 和 value,中间用冒号分隔。这种结构类似于新华字典,字典中每一个字都有一个对应的解释,具体的用法是这
2023-01-30

Linux 脚本编写基础知识

1. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须放在文件的第一行):#!/bin/sh  符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 
2022-06-04

shell编程基础知识有哪些

这篇文章主要介绍了shell编程基础知识有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、文件类型介绍linux系统中主要包括以下七种文件类型: d 目录 - 普通文件
2023-06-09

python3基础知识

字符串截取:利用下标进行截取py_str = 'python'len(py_str)py_str[:3]py_str + '123''python123'py_str * 3'pythonpythonpython'Str将数字转换成字符串L
2023-01-31

基础知识—3.12

1、二叉树:结点:所有的叶子。叶子结点:最后一层的叶子数。性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)。性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1)。性质3:包含n个结点的二叉树的高度至少为log2 (n+
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录