ASCII、Unicode和UTF-8编码的区别

2023-11-11

归纳:

编码 大小 支持语言
ASCII 1个字节 英文
Unicode 2个字节(生僻字4个) 所有语言
UTF-8 1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节 所有语言

具体解释

最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。

但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

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

因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

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

UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

 

https://blog.csdn.net/u012223913/article/details/51772610

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASCII、Unicode和UTF-8编码的区别 的相关文章

  • MySQL 不将 ı 视为 i?

    我在 MySQL 5 7 27 中有一个用户表utf8mb4 unicode ci整理 不幸的是 没有像 i 那样进行线程化 以下查询将找不到Y lmaz select id from users where name Yilmaz 我对其
  • 如何编写对 UTF-8 安全的代码?

    我们有一组针对 ASCII 字符集开发的应用程序 现在 我们正尝试在冰岛安装它 但遇到了冰岛字符被搞砸的问题 我们正在解决我们的问题 但我想知道 是否有一个好的 指南 来编写专为 8 位字符设计的 C 代码 并且在提供 UTF 8 数据时可
  • 字符串中unicode字符的正则表达式

    我正在使用 C 进行一些 OCR 工作 并提取了我需要使用的文本 现在我需要使用正则表达式解析一行 string checkNum string routingNum string accountNum Regex regEx new Re
  • 解析 HTTP 标头值:引用、RFC 5987、MIME 等

    让我困惑的是 HTTP 标头的解码values 示例标头 Some Header quoted string utf 8 en Weirdness 罐头value s被引用 a 的编码怎么样 本身 是 有效的引号字符 分号有什么意义 HTT
  • 将阿拉伯文本分配给 R 变量

    R 无法正确显示阿拉伯文本 当我使用阿拉伯语时 我得到了非常奇怪的东西 这是一个屏幕截图 问题是我想创建一个带有阿拉伯文本的词云 我需要首先解决这个问题 R 版本 R 2 15 2 GUI 1 53 Leopard 版本 64 位 6335
  • 使用 perl 比较两个 Unicode 字符串

    当我运行以下代码时 它不会进入 在此处执行某些操作 部分 my a P 3 lt 1 my b P 3 lt 1 if a ne b do something here 还有另一种方法可以将 Unicode 字符串与 perl 进行比较吗
  • 什么是标准 unicode 字体?

    以下操作系统的标准 unicode 字体是什么 视窗XP 视窗Vista Window 7 按照标准 我的意思是它们存在于操作系统的全新安装中 无需将它们作为附加包安装 我一直在寻找同样的东西 看起来所有 Win 操作系统中只有一种字体 L
  • 为什么该字符串的长度比其中的字符数长?

    这段代码 string a abc string b A C Console WriteLine Length a 0 a Length Console WriteLine Length b 0 b Length outputs Lengt
  • sys.maxunicode 是什么意思?

    CPython 根据编译选项在内部将 unicode 字符串存储为 utf 16 或 utf 32 在 utf 16 版本中 Python 字符串切片 迭代和len似乎适用于代码单元 而不是代码点 因此多字节字符的行为很奇怪 例如 在 CP
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 如何以“正确”的方式处理带有空字节的 Python unicode 字符串?

    Question PyWin32 似乎很乐意将 null 终止的 unicode 字符串作为返回值 我想以 正确 的方式处理这些字符串 假设我得到一个像这样的字符串 u C Users Guest MyFile asy x00 x00sy
  • .NET 正则表达式可匹配任何语言的任何类型的字母

    我可以使用哪种正则表达式来匹配 允许 任何语言的任何类型的字母 我需要匹配任何字母 包括任何变音符号 例如 并排除任何类型的符号 数学符号 货币符号 装饰符号 方框图字符等 和标点符号 我正在使用 ASP NET MVC 2 和 NET 4
  • 当从 html 文件读取 Unicode 内容时,为什么 Unicode 字体在 QTextBrowser 中无法正确显示?

    我正在读一本html文件 该文件基本上包含Unicode案文如下 b akko sati kru akkh ti khy abbahati b h b But the QText浏览器不解释Unicode字体 所以QText浏览器显示如下
  • 控制台应用程序中使用 Unicode 字符的 _tprintf

    我正在从 Unicode 构建的控制台应用程序 使用 C 和 Visual Studio 2008 执行这个简单的输出 此代码旨在在 Windows 上运行 tprintf L Some sample string n 一切正常 但是如果我
  • UCS2 与 UTF。 UCS2编码无法显示哪些语言?

    UCS2 比 UTF 编码更容易在 Visual C 中使用 UCS2 编码不支持哪些语言 没有什么是你可能关心的 或者更重要的是 没有字体 UCS2 为您提供基本的多语言平面 您可以在 Unicode 网站上找到指定平面的概述 0 基本多
  • 用 unicode 字符删除纯文本?

    是否可以删除代码注释中不需要的修改过的单词 由于开发人员仍然在黑暗时代更简单的纯文本时代进行编码 其中文本无法使用隐藏标识符进行格式化 因此实现这一目标的唯一方法是使用 Unicode 字符 由于某些unicode字符可以扩展 y o n
  • 即使我使用 SetWindowTextW(),Unicode 文本在编辑框中显示为问号

    我遇到了 unicode 文件名在编辑框中显示为问号的问题 当我将 unicode 字符 例如阿拉伯语或泰语 粘贴到编辑框中时 它们会正确显示 但在运行此代码后 它们会变成问号 怎么会 WCHAR buf 100 GetWindowText
  • SQLite 的不区分大小写的 UTF-8 字符串排序规则 (C/C++)

    我正在寻找一种方法 以不区分大小写的方式对 C 中的 UTF 8 字符串进行比较和排序 以便在SQLite 中的自定义排序规则函数 http www sqlite org c3ref create collation html 该方法应该i
  • TCHAR 仍然相关吗?

    我是 Windows 编程新手 在读完 Petzold 的书后 我想知道 使用TCHAR类型和 T 函数来声明字符串或者我应该使用wchar t and L 新代码中的字符串 我将仅针对现代 Windows 截至撰写本文时版本 10 和 1
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了

随机推荐

  • ElasticSearch 绑定IP地址

    https blog csdn net yelllowcong article details 78740237
  • Dx11--用dx11绘制棱台,并用键盘和鼠标进行旋转缩放操作

    目录 一 索引缓冲区 前言 创建缓冲区 缓冲区的描述 二 常量缓冲区 前言 准备工作 正式初始化 画面更新及其效果 画面更新 效果 三 键盘和鼠标的创建 1 鼠标的创建 2 键盘的创建 3 更新画面 4 消息回调函数 处理键盘鼠标信息 效果
  • Python协程介绍【赠书活动|第五期《Python编程入门与实战》】

    文章目录 一 相关概念 1 协程 2 子程序 3 区别 4 协程的优势 二 示例 赠书活动 一 相关概念 1 协程 协程 又称微线程 纤程 英文名Coroutine 协程的概念很早就提出来了 但直到最近几年才在某些语言 如Lua 中得到广泛
  • LeetCode : Search for a Range

    Given a sorted array of integers find the starting and ending position of a given target value Your algorithm s runtime
  • Centos7安装jdk1.8

    Centos7安装jdk1 8 两种安装方式 1 检查本机是否安装了jdk 安装了就不用安装了 命令如下 root localhost java version bash java 未找到命令 root localhost 注意 说明未安装
  • 视频解码学习备忘

    媒体文件知识 日常都是播放器直接播 其实这里面还有不少内容的 首先是视频容器 就是所谓的 mp4 mkv 这类文件 其目的主要就是用来存放音频视频字幕等内容 所以叫做容器 这些都有一定规范 比如mp4 叫ISO 14496 12 也即是mp
  • 7-1 图的先深搜索+7-2 图的先广搜索

    由于本人用指针 链表实现数据结构算法时经常有使用堆叠字节的警告以及栈溢出报错 于是就都用数组或者C stl模拟了 输出无向图的给定起点的先广序列 输入格式 输入第一行给出三个正整数 分别表示无向图的节点数N 1
  • C语言-按照单词反转字符串(完整代码)

    编程实现以单词 为单位的字符串逆序 例如 HELLO WORLD WORLD HELLO 目录 实现逻辑 实现代码如下 完整备注 执行结果如下 实现逻辑 当前的实现逻辑 是通过两个指针变量 一个指针
  • 第十二讲:强化学习(Reinforcement Learning)和控制(Control)

    这一章我们就要学习强化学习 reinforcement learning 和适应性控制 adaptive control 了 在监督学习 supervised learning 中 我们已经见过的一些算法 输出的标签类 y y y 都是在训
  • 【Linux】对Linux操作系统中进程的理解

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 冯 诺依曼体系结构 硬件方面 举个例子加深理解 二 操
  • 如何使定时器1ms进入中断一次?

    STM32F103中APB1最大时钟频率72Mhz APB2最大时钟频率36Mhz 所以 1 把定时器设置自动重装载寄存器 ARR 的值为 1000 2 设置时钟预分频器为 71 3 则驱动计数器的时钟 CK CNT CK INT 71 1
  • SpringBoot实现RESTful服务接口

    在实际使用SpringBoot开发项目的过程中 后端服务经常会遇到跨模块访问的需求 这就需要我们的服务接口有同一的开发规范 这样在跨模块调用时才能更方便 高效 而Spring Boot也为我们创建Web服务提供了非常强大的组件化支持 简单而
  • 华为OD机试 - 拔河比赛(Python)

    题目描述 公司最近准备进行拔河比赛 需要在全部员工中进行挑选 选拔的规则如下 按照身高优先 体重次优先的方式准备比赛阵容 规定参赛的队伍派出10名选手 请实现一个选拔队员的小程序 输入为一个数组 记录了部门人员的身高 体重信息 如 身高 体
  • Javaweb

    1 Cookie对象 cookie是一种会话技术 它用于将会话过程中的数据保存到用户的浏览器中 从而使浏览器和服务器可以更好的地进行数据交互 实现获取Cookie信息并将当前时间发送给客户端 代码如下 protected void doGe
  • MultipartFile文件上传报错

    MultipartFile文件上传报错 Postman上传文件访问接口 直接报错了 报错如下 Failed to parse multipart servlet request nested exception is java io IOE
  • SonarQube SonarLint 安装使用教程

    目录 SonarQube 概念 什么是 SonarQube SonarQube 架构 SonaQuge 是如何工作的 现有问题 如何判断代码好坏 为什么要使用 SonarQube 代码可靠性 应用安全 技术债务 SonarQube 安装及配
  • sigmoid和softmax总结

    sigmoid函数 也叫逻辑斯谛函数 引用wiki百科的定义 A logistic function or logistic curve is a common S shape sigmoid curve 其实逻辑斯谛函数也就是经常说的si
  • Spring三级缓存解决循环依赖

    有两个Bean对象 A对象中有一个属性的B对象 B对象中有一个属性的A对象 他们都需要依赖注入 但是map单例池中都没有这个对象 正常情况下在进行注入时 如果map单例池中没有需要的Bean对象B就会去创建这个Bean对象B 但如果需要创建
  • onnxruntime和pytorch时间对比

    https github com microsoft onnxruntime issues 2404 https github com microsoft onnxruntime issues 1621 https github com m
  • ASCII、Unicode和UTF-8编码的区别

    归纳 编码 大小 支持语言 ASCII 1个字节 英文 Unicode 2个字节 生僻字4个 所有语言 UTF 8 1 6个字节 英文字母1个字节 汉字3个字节 生僻字4 6个字节 所有语言 具体解释 最早只有127个字母被编码到计算机里