UTF-8基础

UTF-8编码,转码汉字的实现总结,以及QT‘ /str_ssid中包含的字符就是“\xe9\xa3\x9e”,注意这里的\是包含在里面的字符而不是分隔符。2.现在需要对字符串 “\xe9\xa3\x9e”进行处理 变成““e9a39e””,用16进制的格式存到分别存到3个字节中,这样才能识别出中文来。wifi模块中将wifi中的ssid已char[]数组存起来,char[]数组中的内容是“\\xe9\\xa3\\x9e”- 四字节:U+10000至U+10FFFF,编码为`11110xxx 10xxxxxx 10xxxxxx 10xxxxxx` 阅读详情

1.  概念

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部分修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字的应用中,优先采用的编码。

UTF-8使用一至六个字节为每个字符编码(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多四个字节):

  1. 128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。
  2. 带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要两个字节编码(Unicode范围由U+0080至U+07FF)。
  3. 其他基本多文种平面(BMP)中的字符(这包含了大部分常用字,如大部分的汉字)使用三个字节编码(Unicode范围由U+0800至U+FFFF)。
  4. 其他极少使用的Unicode 辅助平面的字符使用四至六字节编码(Unicode范围由U+10000至U+1FFFFF使用四字节,Unicode范围由U+200000至U+3FFFFFF使用五字节,Unicode范围由U+4000000至U+7FFFFFFF使用六字节)

2. UTF-8编码字节含义

  • 对于UTF-8编码中的任意字节B,如果B的第一位为0,则B独立的表示一个字符(ASCII码);
  • 如果B的第一位为1,第二位为0,则B为一个多字节字符中的一个字节(非ASCII字符);
  • 如果B的前两位为1,第三位为0,则B为两个字节表示的字符中的第一个字节;
  • 如果B的前三位为1,第四位为0,则B为三个字节表示的字符中的第一个字节;
  • 如果B的前四位为1,第五位为0,则B为四个字节表示的字符中的第一个字节;

因此,对UTF-8编码中的任意字节,根据第一位,可判断是否为ASCII字符;根据前二位,可判断该字节是否为一个字符编码的第一个字节;根据前四位(如果前两位均为1),可确定该字节为字符编码的第一个字节,并且可判断对应的字符由几个字节表示;根据前五位(如果前四位为1),可判断编码是否有错误或数据传输过程中是否有错误。

3. Unicode 和 UTF-8 之间的转换关系表

Unicode 和 UTF-8 之间的转换关系表 ( x 字符表示码点占据的位 )
码点的位数 码点起值 码点终值 字节序列 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6
  7U+0000U+007F 10xxxxxxx
11U+0080U+07FF 2110xxxxx10xxxxxx
16U+0800U+FFFF 31110xxxx10xxxxxx10xxxxxx
21U+10000U+1FFFFF 411110xxx10xxxxxx10xxxxxx10xxxxxx
26U+200000U+3FFFFFF 5111110xx10xxxxxx10xxxxxx10xxxxxx10xxxxxx
31U+4000000U+7FFFFFFF 61111110x10xxxxxx10xxxxxx10xxxxxx10xxxxxx10xxxxxx
  • 在ASCII码的范围,用一个字节表示,超出ASCII码的范围就用字节表示,这就形成了我们上面看到的UTF-8的表示方法,这様的好处是当UNICODE文件中只有ASCII码时,存储的文件都为一个字节,所以就是普通的ASCII文件无异,读取的时候也是如此,所以能与以前的ASCII文件兼容。
  • 大于ASCII码的,就会由上面的第一字节的前几位表示该unicode字符的长度,比如110xxxxx前三位的二进制表示告诉我们这是个2BYTE的UNICODE字符;1110xxxx是个三位的UNICODE字符,依此类推;xxx的位置由字符编码数的二进制表示的位填入。越靠右的x具有越少的特殊意义。只用最短的那个足够表达一个字符编码数的多字节串。注意在多字节串中,第一个字节的开头"1"的数目就是整个串中字节的数目。

ASCII字母继续使用1字节存储,重音文字、希腊字母或西里尔字母等使用2字节来存储,而常用的汉字就要使用3字节。辅助平面字符则使用4字节。

在UTF-8文件的开首,很多时都放置一个U+FEFF字符(UTF-8以EF,BB,BF代表),以显示这个文本文件是以UTF-8编码。

4. 示例

字符: A
unicode: U+41
UTF-8: 01000001 (0x41)
说明:只需要一个字节,最高位为0,后面表示unicode值

字符:丁
unicode: U+ 4e01
由3可知需要三个字节表示
1110xxxx 10xxxxxx 10xxxxxx

4e01二进制表示:0100 1110 0000 0001

填充: 1110 0100     1011 1000    1000 0001

UTF-8: 0xe4b881

本文根据自己的理解整理而成,可能还有不足之处,后续会继续修改



影像组学文章复现:ITHscore:通过多尺度放射学特征全面定量NSCLC肿瘤内异质性 ----小细胞肺癌肿瘤异质性评分 目的:通过计算机断层扫描(CT)图像量化非小细胞肺癌(NSCLC)的肿瘤内异质性(ITH)。 方法:整合局部辐射特征和全局像素分布模式,开发定量ITH测量-ITHscore。在六个患者队列(n = 1399)中检查ITHscore与肿瘤表型,基因型和患者预后的关联,以验证其在表征ITH方面的有效性。 阅读详情

相关推荐

LC-3 机器语言 指令集

生活本就沉闷,但跑起来就有风

笔记 1万+

UTF-8编码

通过阅读本篇文章,你可以了解到:UTF-8编码的规则。

飞鱼的博客 1万+

MT6816角度传感器SPI通信避坑指南:从数据手册到稳定读取的3个关键步骤

本文详细解析了MT6816角度传感器SPI通信中的常见问题与解决方案,包括寄存器地址计算、SPI时序配置和数据校验等关键步骤。通过实测波形和代码示例,帮助工程师避开数据手册中的隐藏陷阱,实现稳定可靠的角度数据读取,特别适用于高精度电机控制场景。

weixin_42520573的博客 516

什么是UTF-8编码

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用一至四个字节对Unicode字符集中的所有有效编码点进行编码,属于Unicode标准的一部分,最初由肯·汤普逊和罗布·派克提出。[2][3]由于较小值的编码点一般使用频率较高,直接使用Unicode编码效率低下,大量浪费内存空间。UTF-8就是为了解决向后兼容ASCII码而设计,Unicode中前128个字符,使用与ASCII码相同的二进制值的单个字节进行编

格物致知的专栏 [音视频编解码 网络协议 计算机视觉 计算机图形学 图像理解 语音识别 机器学习 模拟电路 传感器] 3万+

Halcon窗体开发避坑指南:C#自定义控件实现7大图像交互功能

本文详细介绍了如何利用C#封装自定义Halcon控件,以解决原生HWindowControl功能不足的问题。通过实战代码,展示了如何实现图像按比例显示、鼠标拖动缩放、灰度值读取、图像保存、截图及图形叠加等七大核心交互功能,并重点剖析了内存管理、坐标转换等开发避坑要点,帮助开发者构建稳定可复用的机器视觉组件库。

weixin_29251131的博客 292

Minitab田口设计实战:如何用正交试验优化遗传算法参数(附完整操作步骤)

本文详细介绍了如何利用Minitab田口设计进行遗传算法参数优化,通过正交试验方法显著提升效率。文章涵盖实验设计、Minitab操作步骤、结果分析及高级技巧,帮助工程师快速掌握这一工业级优化技术,实现算法性能的显著提升。

wind6的博客 863

UTF-8 与 UTF-16编码详解

UTF-16是Unicode字符编码五层次模型的第三层:字符编码表(Character Encoding Form,也称为 "storage format")的一种实现方式。即把Unicode字符集的抽象码位映射为16位长的整数(即码元, 长度为2 Byte)的序列,用于数据存储或传递。Unicode字符的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示。引用维基百科中对于UTF-16编码的解释我们可以知道,UTF-16最少也会用2 Byte来表示一个字符,因此没有办法兼容ASCII编码。

小鲁蛋的博客 3万+

python乘法运算 信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析

本文解析了全国青少年信息素养大赛Python编程挑战赛的乘法运算题目。题目要求通过递归算法实现两个自然数的乘法运算,并输出算式。算法分析指出可将乘法转化为累加,使用递归函数实现。程序代码展示了一个自定义函数add(),通过递归调用完成累加运算。文章还分析了考点,包括递归函数、输入处理、分支语句等编程基础知识的应用。最后强调解题方法的多样性,重点在于理解递归原理和实现题目要求。该题目难度适中,主要考查选手对递归算法的理解和编程基础能力。

青少年编程学习指导 789

UTF-8编码详解

UTF-8(Unicode Transformation Format-8-bit)是一种可变长度的字符编码,它是Unicode标准的一部分。UTF-8能够表示几乎所有的字符,包括世界上所有的语言所使用的字符。UTF-8的设计灵活,它使用1到4个字节来表示一个字符,根据字符的不同而变化。英文字符通常使用1个字节表示,而一些较为罕见的字符可能需要使用4个字节。通过本文对UTF-8编码的详细解析,我们深入了解了其基本原理、用法以及应用场景。

技术研究中心 3488

华为OD新系统机试真题 - 准备生日礼物(Py/Java/C/C++/Js/Go)

华为OD机试新系统真题 4.8【准备生日礼物】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【准备生日礼物】

qq_45776114的博客 1478

企业级AI平台架构设计:AI应用架构师的未来趋势

企业级AI平台是AI从“实验室”走向“生产线”的关键,而AI应用架构师就是这条“生产线”的总设计师。未来,随着生成式AI、边缘计算、自治式AI的发展,架构师的角色将越来越重要——他们不仅要构建技术平台,还要连接技术与业务,让AI真正创造价值。“不要做‘只会调模型的工程师’,要做‘能解决业务问题的架构师’。因为,真正有价值的AI,从来不是“最先进的模型”,而是“能落地、能复用、能创造业务价值的平台”。愿你在企业AI转型的浪潮中,成为那个“搭建桥梁的人”——连接技术与业务,连接现在与未来。

小程序开发 973

HTML---UTF-8基础知识

文献种类:专题技术总结文献; 开发工具与关键技术: VS ,DW与HTML 作者: 朱海丁 ;年级:1904 ;撰写时间:2020 年 08 月 16 日 HTML基础知识 开发工具与关键技术:VS与HTML MySQL 作者:朱海丁 撰写时间:2020年08月16日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 总是不知道为什么,每次编程序时,有这么一句话 <!DO

MUZIOHH的博客 3319

【Charge】仿真目录

Author: JiJi\textrm{Author: JiJi}Author: JiJi Created Time: 2026.01.20\textrm{Created Time: 2026.01.20}Created Time: 2026.01.20 Modified Time: 2026.01.20\textrm{Modified Time: 2026.01.20}Modified Time: 2026.01.20工作流程材料模型[Charge] 电荷分布与折射率变化理论 [Charge] FDTD

u011699626的博客 312

计算机基础(一):ASCll、GB2312、GBK、Unicode、UTF-32、UTF-16、UTF-8深度解析

从ASCII到UTF-8,一文彻底讲透字符集与编码的本质,终结中文乱码的根源!

从基础到源码解析的学习记录 3743

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ubuntu20.04基础镜像中jdk8.0中文乱码问题(需要加上ENV LANG C.UTF-8和ENV LC_ALL C.UTF-8)

镜像中,它基于的底层操作系统镜像(如Debian或Ubuntu)可能已经包含了针对Java应用更友好的环境设置,包括字符编码的配置。作为基础镜像后出现了乱码问题,这主要是由于两个镜像在本地化(locale)和字符编码配置上的差异。镜像通常保持较为"干净"的状态,只包含最基础的系统配置,以便用户可以根据自己的需求进行定制。这样的更通用的基础镜像开始构建时,可能需要手动进行一些配置来确保相同的支持,如设置。构建你的镜像时,你的应用继承了这些有利于支持多语言(包括中文)显示的环境设置。

Dontla的博客 1399

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ASCII, Unicode和UTF-8字符编码基础

ASCII, Unicode和UTF-8字符编码基础 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写

weixin_46055770的博客 162

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最基础的ASCII、Unicode、UTF-8一起来多了解点

ASCII 简介 ASCII(American Standard Code for Information Interchange-美国信息交换标准代码),是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,到目前为止定义了128个字符。 产生原因 在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如52个英文字母、1-9的数字、常用的一些字符在计算机中存储时也需要使用二进制来表示,而具体使用什么样的二进制来表

Java框架、并发编程、分布式、微服务、Redis、HarmonyOS、中间件等技术 1275

UTF-8字符集基础

字符集简史 在所有字符集中,最知名可能要数被称为ASCII的7位字符集了。它是美国信息交换标准委员会(American Standards Committee for Information Interchange)的缩写, 为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成。 但是,由于他是针对英语

zy122的专栏 1639

UTF-8 字符集基础

字符集简史在所有字符集中,最知名可能要数被称为ASCII的7位字符集了。它是美国信息交换标准委员会(American Standards Committee for Information Interchange)的缩写, 为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成。但是,由于他是针对英语设计

baggio785的专栏 2574

计算机基础:今天一次把 Unicode 和 UTF-8 说清楚

计算机基础:今天一次把 Unicode 和 UTF-8 说清楚 前言 在日常开发过程中,Unicode & UTF-8 并不是很受关注的知识,但在阅读源码或文章时,出现频率很高。如果你没有理解清楚 Unicode、UTF-8、UTF-16 和 UTF-32 之前的关系,会带来阅读障碍。在这篇文章里,我将带你理解 Unicode 字符集的原理,希望能帮上忙。 1. 什么是字符编码 1.1 什么是字符? 字符(Character) 是对文字和符号的总称,例如汉字、拉丁字母、emoji 都是字符。在计算

米不开朗基罗的博客 830

如何使用simdutf:从安装到基础UTF-8/UTF-16转换的完整指南

simdutf是一个高性能的Unicode处理库,利用SIMD指令(如SSE2、AVX2、NEON、AVX-512等)实现每秒数十亿字符的UTF-8/UTF-16/UTF-32编解码和验证,已被Node.js和Bun等主流项目采用。本指南将帮助新手快速掌握simdutf的安装方法和基础的UTF-8与UTF-16转换操作。 ## 为什么选择simdutf?🚀 在现代软件开发中,Unicode字

gitblog_00763的博客 430

【CS336】Transformer|1-字符基础 ASCII、Unicode、UTF-8编码

本文介绍了计算机字符编码的基础知识,包括字节与位的关系、ASCII和Unicode编码标准,以及UTF-8和UTF-32的实现原理。

zzztutu的博客 666

C++ 中 UTF-8 编码字符的使用指南:从基础到非 UTF-8 文件适配

C++中UTF-8字符使用指南摘要: 本文系统探讨C++处理UTF-8编码的完整流程。核心要点包括:1)源文件必须采用UTF-8无BOM格式;2)使用u8前缀定义字符串;3)需配置编译器支持UTF-8解析。针对非UTF-8源文件,需通过编译器参数(如GCC的-finput-charset)显式指定源编码,使u8前缀正确转换。文中提供了跨平台控制台输出、文件读写方案,并强调统一编码(UTF-8无BOM)和成熟库(如ICU)的重要性。最佳实践是统一项目编码格式,避免混合编码导致的乱码问题。

bkspiderx的博客 2013

Unicode,GBK,GB2312,UTF-8概念基础(转载)

第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础本部分采用重用,转载一篇文章来完成这部分的目标。来源:holen'blog 对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16,GBK,GB2312的理解地址:http://blog.donews.com/holen/archive/2004/11/30/188182.aspxU...

weixin_30817749的博客 216
上一篇: Unicode 基础
下一篇: gdb基础
SimpleForest
博客等级 码龄10年 171粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值