课时8:文本和字符集

简介: 本课主要介绍计算机中数据存储的进制形式,着重讲解文本的分类,包括纯文本和富文本的区别,同时深入探讨字符集的概念、常见字符集及其特点,以及乱码问题产生的原因和解决思路。1.计算机底层数据存储进制2.文本的分类和特点3.字符集相关知识

课时8:文本和字符集

 

摘要:本课主要介绍计算机中数据存储的进制形式,着重讲解文本的分类,包括纯文本和富文本的区别,同时深入探讨字符集的概念、常见字符集及其特点,以及乱码问题产生的原因和解决思路。

1.计算机底层数据存储进制

2.文本的分类和特点

3.字符集相关知识


01、 计算机中的数据存储进制


之前我们聊过二进制、十进制、八进制和十六进制。要明确的是,在计算机底层,所有内容都是以二进制形式保存的。我这儿有个小软件,不用你安装,简单看看就行。这软件叫 BinaryViewer(二进制查看器),能直接查看文件的二进制代码。比如我打开当前的README笔记文件,打开后,你会发现展示的都是二进制内容。这就直观地说明了我们编写的文件在计算机底层是以二进制形式存储的,大家看一眼有个印象就行。

image.png

 

02、 文本的分类及特点

 

接下来讲讲文本的概念。我们日常写的东西都可以叫做文本。文本主要分为两种类型:纯文本和富文本。

 

2.1纯文本


纯文本只能保存单一的文本内容,无法保存与文本内容无关的信息,像字体、颜色、图片这些都不行。我们常见的Markdown文件就是纯文本,还有在桌面上新建一个名为“hello.txt”的文本文档,在里面写上“ababc”并保存,这也是纯文本。判断一个文件是不是纯文本,就看它能不能保存除文本以外的内容,比如图片、颜色设置、字体大小设置等,如果都不能,那它就是纯文本。

image.png

 

2.2富文本


富文本则可以保存文本以外的内容,像字体样式、颜色、图片等。最典型的富文本就是Word文档。富文本能存储的内容更丰富,从图片、动画到视频,只要有需求都能存进去。

在开发程序的时候,我们使用的是纯文本。一般不会用Word写程序,除非有特殊情况,正常情况下编写代码都是用纯文本。

image.png

 

03、 纯文本的字符编码

 

纯文本内容在计算机底层同样要转换成二进制进行保存,这里就涉及到字符编码。把字符转换为二进制编码的过程叫编码,反过来,将二进制码转换为字符的过程就是解码。这就好比谍战片中,中共地下工作者发电报,发电报时把文字转换成对应的编码发送出去,接收方收到后再把编码转换回文字,这就是解码。

在编码和解码过程中,要遵循一定的规则,这个规则在计算机里被称为字符集。下面列举一些常见的字符集:

image.png

1ASCII

ASCII是美国人发明的编码,用七位来对美国常用字符进行编码。七位二进制数,不同组合方式共有128种,所以ASCII里有128个编码。美国的英文字母大小写加起来是52个,再加上各种符号,128个编码刚好够用。它是最早的编码,位数最少,只有七位。

2ISO8859-01

这是欧洲的编码标准,使用八位二进制数进行编码。因为欧洲语言相对更复杂,字符和符号更多,所以比ASCII多了一位。多一位就意味着编码数量增加一倍,一共有256个字符,它包含了ASCII的128个字符。

3GB2312和GBK

这些是中国的国标码,“GB”是“国标”的拼音缩写。它们把中文文字编进去,用来表示中文。但GB2312和GBK也有缺点,只包含常用中文,一些生僻字在里面没有。以前办理身份证时,如果名字里有生僻字,就打不出来,只能手写,这就是这些编码的局限性。

4Unicode

Unicode也叫万国码,它包含了世界上所有的语言和符号,是最全的编码。打开Unicode编码表,你能看到里面有各种各样的符号,包括中文和其他各国的文字符号。如果希望代码在世界上通用,有良好的兼容性,编写程序时一般会使用Unicode编码。

Unicode有多种实现方式,比如UTF-8、UTF-16和UTF-32。UTF-32固定使用四个字节来表示一个字符;UTF-16使用2-4个字节来表示,是变长的;UTF-8同样是变长的,使用1-5个字节来表示字符。在实际应用中,我们最常用的是UTF-8编码,以后开发时,一般使用的编码字符集就是UTF-8。

 

04、 乱码问题及解决

 

在编写程序时,如果代码出现乱码情况,就要马上去检查字符集是否正确,很可能是字符集设置错误。比如编码用的是GB2312,解码却用UTF-8,这样就会乱码。遇到乱码问题,就要检查字符集是否正确,不同的文本编辑方式修改字符集的方法不同,后续遇到相关问题我们再详细演示。以上就是关于进制、文本类型、字符集以及乱码问题的相关内容,之后我们会进一步探讨如何使用纯文本进行编程。

相关文章
|
canal Kubernetes 网络架构
K8s CNI 网络最强对比:Flannel、Calico、Canal 和 Weave
Kubernetes 采用的 CNI 标准,让 Kubernetes 生态系统中的网络解决方案百花齐放。更多样的选择,意味着大多数用户将能够找到适合其当前需求和部署环境的 CNI 插件,同时还可以在环境发生变化时也能找到新的解决方案。
3778 1
sublime和vscode 推荐安装的插件
sublime和vscode 推荐安装的插件
240 0
|
11月前
|
JSON 安全 API
如何使用Python开发API接口?
在现代软件开发中,API(应用程序编程接口)用于不同软件组件之间的通信和数据交换,实现系统互操作性。Python因其简单易用和强大功能,成为开发API的热门选择。本文详细介绍了Python开发API的基础知识、优势、实现方式(如Flask和Django框架)、实战示例及注意事项,帮助读者掌握高效、安全的API开发技巧。
1375 3
如何使用Python开发API接口?
|
缓存 Java 数据库
Spring Boot中使用监听器
系统的介绍了监听器原理,以及在 Spring Boot 中如何使用监听器,列举了监听器的三个常用的案例,有很好的实战意义。最后讲解了项目中如何自定义事件和监听器,并结合微服务中常见的场景,给出具体的代码模型,均能运用到实际项目中去,希望读者认真消化。
|
Kubernetes 监控 安全
云原生安全DevSecOps思考
关于云原生安全DevSecOps思考,本文的目的是深入探讨云原生环境下的安全脆弱性,并介绍配套的工具和方法,帮助企业在步入云原生大门时关好每扇安全窗。
417 1
云原生安全DevSecOps思考
|
存储 Java 关系型数据库
基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)
基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)
2331 0
基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)
|
存储 SQL 关系型数据库
StarRocks简介
【5月更文挑战第4天】StarRocks是Linux基金会的开源MPP数据库,提供MySQL协议兼容性,支持标准SQL,用于快速数据分析。它适用于OLAP、实时数仓、高并发查询等场景,具有无外部依赖、高可用和易运维的特点。StarRocks支持多种BI工具,如Tableau,且可构建各种数据模型。其系统架构包括Frontend(FE)和Backend(BE),提供存算一体和存算分离两种模式。此外,StarRocks支持四种表类型和多种数据类型,满足不同业务需求。
1980 0
StarRocks简介
|
数据安全/隐私保护 图形学
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
|
JavaScript 前端开发 API
vue 报错【解决方案】/sockjs-node/info?t=
vue 报错【解决方案】/sockjs-node/info?t=
1637 0
|
搜索推荐 关系型数据库 MySQL
MySQL安装时常见问题和解决方案【详解】
包含了MySQL安装时常见问题和解决方案,快捷实用
1642 0
MySQL安装时常见问题和解决方案【详解】