Unicode、ASCII、UTF-8编码关系和底层原理

ASCII Unicode 和UTF-8区别 [教程]-ASCII,Unicode和UTF-8之间的区别和联系 立即下载

背景

之前遇到过一个bug,我大概描述一下,就是一个搜索列表,比如你想查询性“张”的人,输入一个“张”,对于搜索出来的结果,每个结果的名称标签渲染成蓝色,也就是把每个结果里的“张”字加蓝,但是这个bug,现在变蓝了三个字。

解决思路

1.我后面尝试了搜索纯字母和数字,结果都没问题, 正常渲染加蓝。

2.查看渲染的代码,也没任何问题。

3.经过1和2的尝试,问题锁定到了汉字的问题上,那汉字可能就是编码的问题

4.然后我发现name的类型是QString,而后面搜索渲染search_name类型是string。(有人问为什么从name到search_name要换类型,不换不就没事了,因为这两个都是类里面的变量,很多地方都在用)

5.后面查了一下资料发现,QString的length()方法返回的是字符串中的字符数量,而不是字节数量。而string的length() 方法返回的是字符串所占的字节数,最后将string转换为QString就解决了。

扩展提升

1.这个bug,我解决后问过一个java大佬,这个大佬在我给他描述问题的时候,说到搜索一个汉字变蓝三个,数字和字母没有问题的时候,大佬就知道哪的错误了,因为他说正常使用utf-8编码,一个汉字是占三个字节,这就是为什么是汉字最后三倍渲染加蓝,输入两个字最后的结果就是六个字加蓝。

2.所以这个bug本质的问题还是编码方面的知识,无关方面和语言,还是个人积累的知识量不够多,下去好好再学学编码方面的底层原理。

你真的懂 Unicode 和 UTF-8 是什么关系吗?来看看这个就彻底懂了!_unicode和utf8的关系-优快云博客上面是我觉的一篇写的特别好的文章,详细的讲了UTF-8,UTF-16,UTF-32,ASCII码,Unicode底层原理以及它们之间的关系,这个问题我在字节一面的时候面试官也详细问过很多。

3.面试的原问题:先问了Unicode和ASCII码是什么,后面又问了UTF-8,UTF-16,UTF-32这些和Unicode有什么关系,最后又详细问了UTF-8的底层原理。

答案:Unicode是一个字符集标准,ASCII则是Unicode的一个子集,包含最基本的字符,而UTF-8、UTF-16和UTF-32是实现Unicode这个标准的不同编码方式,UTF-8的底层原理参考上面我推荐的文章,我这里就不做详细的解释了。

感悟

之所以写这篇文章是因为面字节的时候问到了,我简历上也没写,没想到面试官会问到,我这个问题回答的特别好,面试官也说挺好的,但复活赛的二面还是挂了(之前三面挂了,另外一个部门给我捞起来了),刚好解决过这个bug后面详细的学习了一下编码的底层原理,要不然可能真的不会,同时这个bug也让我认识到了自己和大佬的差距,知识含量不是一个量级的,最后给大家一个真心的建议,平时学习的时候,不要会用就行了,多敲一敲小的demo,深入学习底层原理。

最后,如果觉得我的文章对你有帮,请点赞收藏加关注,谢谢大家。

ASCII、Unicode、GBK和UTF-8字符编码的区别联系 立即下载

相关推荐

基于大模型的围术期谵妄防控系统研究报告

围术期谵妄是一种急性脑功能障碍综合征,通常发生在手术前后一段时间内。患者会出现意识障碍、注意力不集中、认知功能紊乱、睡眠 - 觉醒周期失调等症状,严重者甚至会出现幻觉、妄想和攻击行为 。这种病症不仅会给患者自身带来极大的痛苦,还会对其术后康复产生严重的负面影响。从患者角度来看,围术期谵妄会显著延长患者的住院时间,增加患者的医疗费用负担。有研究表明,发生谵妄的患者住院时间平均比未发生者延长 2 - 3 天。长时间的住院不仅会影响患者的生活质量,还可能导致患者错过最佳的康复时机,影响身体机能的恢复。同时,谵妄还

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1071

了解:ASCII 码、 Unicode 编码、UTF-8

ASCII 码 在计算机内部,所有数据都使用 二进制表示。每一个二进制位(bit)有 0 和 1 两种状态,因此 8 个二进制位就可以组合出 256 种状态,这被称为一个字(byte)。一个字节一共可以用来表示 256 种不同的状态,每一个状态对应一个符号,就是 256 个符号,从0000000 到 11111111。 ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进...

weixin_43481118的博客 299

【FPGA XDMA AXI Bridge 模式】PCIe:BARs 和 AXI:BARs 含义解析

Xilinx的 DMA/Bridge Subsystem for PCI Express IP核中,支持普通的XDMA模式,但是这种模式只允许主机端发起PCIe 读写请求,FPGA内部无法主动发起读写请求,也即FPGA无法主动读写HOST的内存。而该IP核的另一种模式,AXI Bridge模式则支持HOST主动读写,以及FPGA主动读写。该模式下有个参数需要配置,分别是PCIe:BARs以及AXI:BARs。而上述的普通模式只有PCIe:BARs需要配置。下面详细说说这两个参数的含义。

weixin_45888152的博客 3732

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

字符编码ASCII、Unicode、UTF-8编码的区别

ThisEqualThis的博客 1969

基于深度学习的时间序列预测

深度学习在时间序列数据中应用广泛,学术界已经有很多深度学习模型来适应不同领域的时间序列数据集的多样性。那么到底有哪些基于深度学习的时间序列预测模型?他们的优缺点是什么?让我们一起来看一下。

Sharon0408的博客 6582

【生物识别模组介绍】静脉识别模组

静脉识别技术是依据流动的静脉血液中的血红蛋白对近红外光有所吸收,通过近红外光照射手指、手掌、面部、腕部呈现的分布图像,再使用特定的算法对图像进行特征提取、分析比对,从而进行身份认证识别。静脉结构相同几率为34亿分之一,每个人的静脉结构具有独特性,而且静脉特征图像自成年后终身不变,不受外部环境、疾病等影响,是人体最稳定的生物特征之一。商务合作联系:newmagicmission@gmail.com图1.0。

upupDay's blog 902

ASCII和Unicode和Utf-8

是一种广泛使用的字符编码方式,它能够表示几乎所有语言的字符。UTF-8 是一种可变长度的编码方式,每个字符的编码长度可以从 1 到 4 字节不等,具体取决于字符的 Unicode 值。Unicode 是 ASCII 的超集,ASCII 字符集中的字符在 Unicode 中有相同的编码值,因此可以通过 Unicode 兼容 ASCII。,包括汉字、日文、阿拉伯文等各种符号,目的是消除不同编码方式(如 ASCII、GBK、ISO-8859 等)之间的兼容性问题。ASCII 仅能表示。

mx_2022的博客 2001

ArcGIS插值可视化气象数据

前言 地图底图的制作和气象数据的预处理见我上两篇博客 ArcGIS精美中国地图制作(详解) python处理日值气象数据 在前面我们已经将日值的地温数据处理成了年均地温,添加了站点经纬度坐标并导出为excel格式。 得到如下数据: 导入数据 在Arcmap中 文件-添加XY数据 将年均地温和站点位置数据导入。 注意:excel表格的格式要另存为97-2003工作簿形式,否则会有"arcgi...

江北20190411的博客 2万+

从ASCII码->Unicode->UTF-8历史变迁,你知道它们的差异吗?

说到ASCII,Unicode和UTF-8,可能大家都知道是字符编码,但具体含义,以及其中差异,可能很多人都不知道。一、名称解释ASCII:AmericanStanda...

499

YOLOv5/v7/v8/v9/v10/v11/v12/13目标检测结果解析,超w字精读,IoU、GIoU、DIoU、CIoU、EIoU详细解释,精确率、召回率、AP、mAP与P-R 曲线图深度解析

YOLOv5/v7/v8/v9/v10/v11/v12/13目标检测结果解析,超w字精读,IoU、GIoU、DIoU、CIoU、EIoU详细解释,精确率、召回率、AP、mAP与P-R 曲线图深度解析

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1414

Ardupilot chibios IO固件,IO与FMU通信,固件下载(3)

目录 文章目录目录摘要 摘要 本节主要记录自己学习IO与FMU通信

陌城烟雨 2801

史上最好理解的Unicode编码讲解(Unicode的前世今生)

一、了解编码 在计算机中存储的数据都是01二进制的数据串,我们再电脑屏幕上看到的一切可视化的东西最终在计算机存储的都是01二进制串,现在看到我博客上的文字也是。 这里就需要一个映射关系,将我们看到的看到的字符、图片、视频转换成对应的二进制,存储到计算机中,以便于计算机能够识别。这就是我们要将的编码。 图片和视频首先会转换成字符流,然后按照编码转换成字节流,存储到计算机中。 举一个例子:在ASCL...

Zystem 6575

【CANdelaStudio编辑CDD】-2.2-给$27服务SecurityAccess创建一个SecurityLevel安全级别并修改SecurityAccess安全访问状态机(UDS诊断)

前一篇: 【UDS诊断描述文件CDD】-2.1-ISO_14229中$27服务理论部分https://blog.youkuaiyun.com/qfmzhu/article/details/120392660 案例背景: 在CDD中如何给$27服务创建一个新的SecurityLevel安全级别; 在CDD中如何给$27服务修改SecurityAccess安全访问状态机。 1 查看$27服务中已有的SecurityLevel安全级别 2 查看$27服务中已有的SecurityAccess安全...

「汽车电子助手」的博客 4642

Python3:字符编码问题(ASCII,Unicode 和utf-8)

编码的故事 因为计算机产生于美国,所以起初只有ASCII编码方式,将英文字符和常见的符号编为二进制码。后来,计算机就发展到了中国,日本,韩国等众多国家,他们都需要在计算机上处理本国的语言,起码是文本的编辑和存储。所以有一段时间,各国都针对本国的语言,设计了编码方式,如我们的GB2312编码。 那么,这么多编码,打架是必然的。假如一个文本文件里,有英文,中文,日文,内存在读取或者存储文本文件时,真的...

qq_39352020的博客 979

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

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

从底层原理看字符编码:ASCII、Unicode 与 UTF-8 的演进

本文简要分析了 ASCII、Unicode 与 UTF-8 的发展与关系,从 ASCII 只能表示英文字符的局限出发,引出 Unicode 统一全球字符的设计思想,进一步分析 UTF-8 作为 Unicode 高效实现方式的编码原理与优势。

稳扎稳打,持续进步 3098

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ASCII、Unicode、GBK、UTF-8之间的关系

一、ASCII编码 目录 一、ASCII编码 二、GBK编码 三、Unicode编码 四、UTF-8编码 五.Unicode和UTF-8之间的转换 六.Little endian 和 Big endian 七.实例 八.补充(来自廖雪峰老师python教程文档) ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节

专注自动化、性能测试、测试架构学习交流 4957

Devexpress16.2.6破解工具

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

ASCII、Unicode、UCS-2、UTF-8互转编码原理

Unicode的范围为 【0-0x10FFFF】,换算成10进制为【0-1114111】有0-1,114,112个字符,所以100多万个字符是足以支持世界上的任何语言的世界上存在着多种编码方式, 同一个二进制数字可以被解释成不同的符号. 因此, 要想打开一个文本文件, 就必须知道它的编码方式, 否则用错误的编码方式解读, 就会出现乱码.为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样.

港城大白鲨 2980

字符编码ASCII码、Unicode和UTF-8之间的关系

字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从000000...

郭亮均的博客 1765

字符编码原理 ASCII,Unicode和UTF-8

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

qq_31753145的博客 3089

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

一、ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了...

Neo 7960

ASCII,Unicode和UTF-8之间的关系终于明白了

今天看廖雪峰老师的python教程文档看到了这个问题,于是网上搜一下这三个究竟是什么关系。发现一片比较好的文章于是转载过来了。感谢原作者http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 1.ASCII 我们知道计算机内部所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,...

mijichui2153的博客 1598

ASCII、Unicode、UTF-8 和 Base64 等编码

ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态(-128~127),这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。 ASCII码一共规定了128个字符.

weixin_42291794的博客 1320

ASCII、Unicode、UTF-8以及彼此的联系

1.ASCII ​ 1.1.ASCII简介 ​ 1.2.ASCII的局限性 2.Unicode ​ 2.1.Unicode简介 ​ 2.2.Unicode解决了什么问题 ​ 2.3.UCS-2和UCS-4 ​ 2.4.Little endian 和 Big endian ​ 2.5.Unicode中文的注意事项 ​ 2.6.Unicode没有解决的问题 3.UTF-8 ​ 3.1.UTF-8简介 ...

fadai 1455

ascii码,unicode编码,utf-8编码

我理解的ascii码,unicode编码,utf-8编码; 1、ascii编码: 美国于上个世纪60年代制定了一套字符编码,英语字符与二进制位之间对应关系,做了统一规定。故此诞生了一直沿用至今的ASCII码。 2、unicode编码 英语用128个符号编码就足够了,但是用来表示其他语言,128个符号是不够的。 此时,unicode编码出现了。 unicode是这样一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码(在0-127位,unicode与ascii表...

weixin_41228949的博客 1991

Unicode 和 UTF-8关系

Unicode 和 UTF-8关系

yyyljw的博客 1666

字符编码 ASCII 非ASCII Unicode UTF-8 URL编码

对 “保留字符” 进行 URL 编码:如果一个 “保留字符” 在特定上下文中具有特殊含义,并且 URL 中必须使用该 “保留字符” 用于其它目的,那么必须对不表示特殊含义的 “保留字符” 进行 URL 编码。如果一个字符是 ASCII 字符,那么对该字符进行 URL 编码,首先需要把该字符的 ASCII 的值表示为两个 16 进制的数字,然后在其前面放置转义字符 %,就得到了该字符的 URL 编码结果。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。

weixin_52635036的博客 2240
上一篇: C++多线程编程lock_guard和unique_lock
下一篇: 面向对象编程的 SOLID 设计原则
CodeCheers
博客等级 码龄5年 154粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值