[转] 字符编码 ASCII UNICODE UTF-8

Hello,World!的ASCII码转换(Java实现) 题目描述 输入数字和输出相应的消息 输入 输入将包含由空白区(空间、新线、TAB)分离的正整数列表。请处理到文件的末尾 (EOF)。整数将不少于 32。 输出 输出相应的消息。请注意,输出末尾没有新线字符。 样例输入复制 72 101 108 108 111 44 32 119 111 114 108 100 33 样例输出复制 Hello, world! 代码实现: /** * 作者:陈二胖 * 时间:2021/10/24 20:13 * 目的:TODO ASCII码转换为字符串 */ i 阅读详情

本文整理自廖雪峰的 Python 教程中的字符串与编码一节,因为对于字符串编码的渊源讲解得比较好,故节选下来。(文末注明了详细的地址)

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用 8 个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是 255(二进制 11111111 = 十进制 255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是 65535,4 个字节可以表示的最大整数是 4294967295。

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

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

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

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

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

现在,捋一捋 ASCII 编码和 Unicode 编码的区别:ASCII 编码是 1 个字节,而 Unicode 编码通常是 2 个字节。

字母 A 用 ASCII 编码是十进制的 65,二进制的 01000001;

字符 0 用 ASCII 编码是十进制的 48,二进制的 00110000,注意字符 ‘0’ 和整数 0 是不同的;

汉字 中 已经超出了 ASCII 编码的范围,用 Unicode 编码是十进制的 20013,二进制的 01001110 00101101。

你可以猜测,如果把 ASCII 编码的 A 用Unicode编码,只需要在前面补 0 就可以,因此,A 的 Unicode 编码是 00000000 01000001。

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

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

字符ASCIIUnicodeUTF-8
A0100000100000000 0100000101000001
中x01001110 0010110111100100 10111000 10101101

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

搞清楚了 ASCII、Unicode 和 UTF-8 的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式:

在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者需要传输的时候,就转换为 UTF-8 编码。用记事本编辑的时候,从文件读取的 UTF-8 字符被转换为 Unicode 字符到内存里,编辑完成后,保存的时候再把 Unicode 转换 UTF-8 保存到文件;浏览网页的时候,服务器会把动态生成的 Unicode 内容转换为 UTF-8 再传输到浏览器:所以你看到很多网页的源码上会有类似 <meta charset="UTF-8" /> 的信息,表示该网页正是用的 UTF-8 编码。


转自:廖雪峰的官方网站-字符串和编码

Adobe Acrobat Pro DC 专业安装与核心功能验证指南 PDF(便携式文档格式)作为一种跨平台、保真的文档标准,其核心原理在于将文本、字体、图像等元素封装成独立于软件、硬件和操作系统的文件。这一特性使其在文档分发、归档和电子签名等场景中具有不可替代的技术价值。随着办公自动化和数字工作流的普及,对PDF进行深度编辑、批量处理和格式转换的需求日益增长,这直接推动了专业PDF工具的发展。在众多解决方案中,Adobe Acrobat Pro DC凭借其强大的编辑精度和批量处理能力,成为处理技术文档、合同报告等复杂任务的首选工具。本文将从获取官方安装包开始,详细解析安装过 阅读详情

相关推荐

Raptor码(一):2007RFC5053标准编解码学习

RFC 5053 标准

a_beatiful_knife的博客 3491

Hello world对应的ASCII码形式

ASCII码对应的内容

ljq0211的博客 2462

PLc S7-200 smart如何使用Modbus 485通讯传输接收数据

西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器,从而实现PLC通过modbus方式控制其他器件。提示:以下是本篇文章正文内容,下面案例可供参考。

xjbsw0的博客 6万+

从ASCII码到Unicode编码到UTF-8(BOM)编码

①先出现的ASCII码,后出现Unicode编码,因Unicode编码内存利用率低,后出现UTF-8编码。

feiniaoren的博客 224

亚马逊SP-API授权实战:从OAuth流程到Refresh Token获取

本文详细解析了亚马逊SP-API授权流程,从OAuth认证到Refresh Token获取的全过程。通过实战经验分享,帮助开发者快速掌握Marketplace Appstore、Website Workflow和自行授权三种方式,解决常见错误如MD5100和MD9999,并提供了安全存储Refresh Token的最佳实践。

weixin_30379531的博客 518

手把手教你理解特斯拉Model 3的域控制器架构:RBCM如何成为“多面手”?

本文深入解析特斯拉Model 3的域控制器架构,重点介绍右车身域控制器(RBCM)如何整合车身电子系统功能。RBCM作为多任务处理中枢,管理空调系统、尾部电气设备和超声波雷达等关键功能,展现了特斯拉在汽车电子架构上的创新设计。文章详细探讨了RBCM的硬件架构、功能版图及信号网络,揭示其如何通过高性能MCU和智能开关技术实现功能集中与效率提升。

weixin_30919429的博客 378

python ascii文本转utf8

我整理的一些关于【CI】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://edu.51cto.com/surl=iqhDF2Python 中 ASCII 文本转 UTF-8 的方法 在开发过程中,处理文本文件时常常需要转换编码格式。在 Python 编程语言中,ASCII 和 UTF-8 是两种常用的...

weixin_28946735的博客 407

最新版Node.js下载安装及环境配置教程(非常详细)

选择对应你系统的Node.js版本。

DN金猿的博客 12万+

ASCII码、Unicode和UTF-8之间的转换

ASCII码:是指单字节字符集; Unicode:本文特指按Big Endian存储的字符集; UTF-8:一种变长的编码字符集。它可以使用1~6个字节表示一个符号, 根据不同的符号而变化字节长度。 UTF-8的编码规则如下: 1)对于单字节的符号, 字节的第一位设为0, 后面7位为这个符号的unicode码. 因此对于英语字母, UTF-8编码和ASCII码是相同的。 2)对于n字节的符号(n>1), 第一个字节的前n位都设为1, 第n+1位设为0, 后面字节的前两位一律设为10. 剩下的..

Santa_q的专栏 6316

从X86到ARM:全面解析服务器CPU架构的演变与未来趋势

本文深入解析了服务器CPU架构从X86到ARM的演变历程与未来趋势。文章从CISC与RISC两种设计哲学切入,分析了X86凭借生态建立的帝国地位及其面临的功耗挑战,并重点阐述了ARM架构凭借其卓越的能效比优势,正从移动端向数据中心市场发起冲击。未来,异构计算、软硬协同与专用芯片将成为服务器CPU发展的核心方向。

gold的博客 1126

自动驾驶领域自动化数据标注应用

自动驾驶领域自动化数据标注应用 1. 背景介绍 1.1 自动驾驶技术的发展 自动驾驶技术近年来取得了长足的进步,吸引了众多科技公司和传统车企的投入。自动驾驶系统需要感知周围环境、做出决策并控制车辆,是一个极具挑战的任务。其中,环境感知是自

AI天才研究院 2214

【转】字符编码笔记:ASCII,Unicode和UTF-8

作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的...

abc1187的博客 122

广东省低应变题库

11.按《建筑地基基础检测规范》DBJ/T15-60-2019的规定,采用低应变法对混凝土预制桩进行检测时,地基基础设计等级为甲级的桩基工程抽检桩数不应少于总桩数的30%,其余桩基工程抽检桩数不应少于总桩数的20%,且不得少于10根;16.按《建筑地基基础检测规范》DBJ/T15-60-2019的规定,当对某桩的桩身完整性判定为III类时,可认为该桩不满足验收条件,不用进一步确定该桩桩身缺陷对桩身结构承载力的影响程度。2.地基基础检测所用计量器具均应在检定(校准、验证)的有效期内,性能符合相关技术要求。

ZShy001238的博客 318

【转】字符编码笔记:ASCII,Unicode 和 UTF-8

原文:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html https://www.key-shortcut.com/en/character-tables/unicode-3000-3fff/ https://baike.baidu.com/item/Unicode/750500?fr=aladdin ...

weixin_30902251的博客 137

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

字符编码笔记:ASCII,Unicode和UTF-8(转)

字符编码笔记:ASCII,Unicode和UTF-8(转) 作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的

ahoo110的博客 1514

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

字符编码笔记:ASCII,Unicode和UTF-8 转

本文出处http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 只是为了记录一下省得要去搜。 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。但...

altzlo7909的博客 98

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

转:字符编码笔记:ASCII,Unicode 和 UTF-8

转: http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 作者:阮一峰 日期:2007年10月28日 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料。 这个问题比我想象的复杂,午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。我尽量写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字...

PacosonSWJTU的博客 212

[转]字符编码笔记:ASCII,Unicode和UTF-8

字符编码笔记:ASCII,Unicode和UTF-8 作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是...

@用小弟弟思考的程序员 121

(转)字符编码笔记:ASCII,Unicode和UTF-8

文章出处 http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。但是,我尽量...

dengguawei0519的博客 60

字符编码简介:ASCII,Unicode,UTF-8,GB2312(转)

字符编码简介:ASCII,Unicode,UTF-8,GB2312 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11...

dechuannao3731的博客 198

(转)字符编码简介:ASCII,Unicode,UTF-8,GB2312

转自:http://blog.youkuaiyun.com/xoyojank/archive/2008/12/16/3529415.aspx 1. ASCII码# I, l: i4 J6 \$ C+ C1 e3 [6 P我 们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状 态,这被称为一个字节(by...

a551546150的博客 293

字符编码:ASCII,Unicode和UTF-8[转]

很实用的一篇文章关于字符编码的,转载过来,作为收藏。 —===引用原文内容===— 作者:阮一峰 链接:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。...

我的鱼塘 189
上一篇: 并发编程专题 3:synchronized
下一篇: Android 高级面试-3:语言相关
开发者如是说
博客等级 码龄10年 67粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值