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字符编码的区别联系 立即下载

相关推荐

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

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

weixin_43481118的博客 299

Unity3D实战:5分钟搞定RTSP监控视频流播放(附完整代码)

本文详细介绍了如何在Unity3D中快速实现低延迟RTSP监控视频流播放,提供完整代码和优化方案。通过Video Player组件和FFmpeg集成,开发者可以轻松应对智能家居和安防监控领域的实时视频流挑战,显著降低延迟并提升性能。

weixin_29015051的博客 588

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

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

ThisEqualThis的博客 1969

Apifox CLI + Claude Skills:将接口自动化测试融入ai

基于 Apifox CLI、Claude Code以及Claude Skills组合,实现自然语言触发接口自动化测试。

wwz_0012的博客 599

计算机视觉——SIFT特征匹配

文章目录一、SIFT特征检测原理1.1基本思想1.2二、SIFT特征检测图片兴趣点三、SIFT特征检测描述子匹配四、输入图片检测与之 一、SIFT特征检测原理 1.1基本思想 1.2 二、SIFT特征检测图片兴趣点 代码: 检测结果: 三、SIFT特征检测描述子匹配 四、输入图片检测与之 ...

weixin_43869874的博客 3855

ASCII和Unicode和Utf-8

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

mx_2022的博客 2001

分子对接中的相互作用特征分析(目视筛查)

介绍分子对接的相互作用特征,以及如何通过这些特征进行目视筛查

recher_He1107的博客 5761

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

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

499

Infiniband互连网络概述

一、Infiniband是什么? InfiniBand(简称IB)是一种工业标准规范,它定义了一种输入/输出架构,用于计算节点、通信基础设施设备、存储和嵌入式系统的互连。操作系统可以是Linux、Windows或ESXI。 IB网络一共是五层,从第一天起,IB就被设计为提供一个端到端的解决方案,改善和加速从物理层到上层的所有协议层。 IB协议于2000年由IBTA(InfiniBand Trade Association)提出,其规定了一...

weixin_41687819的博客 5229

AUTOSAR R20-11标准下载!

这是公众号的第2篇推文,粉丝数49 Document Search Classic Platform Adaptive Platform Foundation 文档截图 以为会在明天的发布会之后才上线,没想到官网现在就悄悄放出来了。 中国由于网络问题,下载速度比较慢或者会中断。 “阅读原文”提供多种下载方式,可以在线浏览,可以集中下载也可单个文档下载。 如有增减我也会及时在公众号里通知大家,不过我觉得不会变动了。 整理不宜,好东西要分...

Adaptive_AUTOSAR的博客 1891

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

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

Zystem 6575

扩展卡尔曼滤波 (EKF, Extended Kalman Filter) 算法详解及案例分析

扩展卡尔曼滤波是一种用于估计非线性动态系统状态的递归算法。其目标是通过结合非线性系统模型和观测数据,估计系统的最优状态。

闲人编程的博客 2387

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

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

qq_39352020的博客 979

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

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

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

稳扎稳打,持续进步 3098

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

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

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

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

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

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、付费专栏及课程。

余额充值