字符编码基本介绍

news2025/1/24 8:37:22

基础概念

  • 字符

     任何一个文字或符号都是一个字符,不同的编码导致一个字符所占的内存不同。
    
  • 字符集

     字符的集合就叫字符集。
    
  • 字符编码(charset encoding,简写为 encoding)

     1. 定义字符集中的字符如何编码为特定的二进制数。
     2. 字符集和字符编码一般一一对应,GBK 字符集对应 GBK 编码,
     3. ASCii 字符集对应 ASCii 编码。
     4. Unicode 字符集有 UTF-8、UTF-16 和 UTF-32 三种编码方式。
    

编码介绍

  • Unicode编码

    Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

  • UTF-8
    它并不是字符集,UTF-8就是在互联网上使用最广的一种Unicode的实现方式。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
    UTF-8的编码规则很简单,只有二条:
    1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。ASCII码表示英文,范围0-127,用7位表示。

使用

  • 计算机里面怎么使用编码
    1)在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
    2)场景:
    用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。
    3)拓展:
    记事本默认保存的编码是ANSI,ANSI也叫多字节字符集,ANSI其实不是一种编码方式,是所有使用不定长字节来表示字符的编码格式的统称,在简体中文Windows操作系统上,ANSI指的是GBK编码,在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 JIS 编码。当然你用可以更改记事本的保存格式。Unicode同理,Unicode是一个字符集,不是一个编码方式,在windows这边,Unicode指的是UTF-16,在其他环境下,可能指的是UTF-8或UTF-32,比如linux上指的是utf-8.

  • 文件编码与程序编码
    1)文件编码是你当前在编辑源代码时,代码里的字符串是以什么样的编码存储,这也是为什么很多人在windows上写的代码到linux下进行编译就会出现乱码以及编译器无法解析的字符串,一些莫名其妙的问题。
    2)程序编码是程序运行之后在处理字符串时所使用的编码。
    vs设置程序编码:
    Visual Studio 默认编码为utf-8。
    在这里插入图片描述

  • QString编码方式和中文乱码解决方法
    1)QString的内部编码方式是unicode,utf-16编码,当char* 或std::string 转换成-QString时,默认char* 或std::string的编码方式为UTF-8。
    2)中文乱码:qt中的fromLocal8Bit()函数可以设置编码;可以实现从本地字符集GB到Unicode的转换,从而处理汉语显示乱码等问题。windows默认使用(GBK/GB2312/GB8030)。

QString str2qstr(const string str)
{
    return QString::fromLocal8Bit(str.data());
}

string qstr2str(const QString qstr)
{
    QByteArray cdata = qstr.toLocal8Bit();
    return string(cdata);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/996149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业架构LNMP学习笔记36

1、MySQL的负载均衡: 1)在各个数据库授权远程登录用户; 2)在各个数据库创建不同的识别数据库; 3)配置转发规则; 4)查看测试; 1、在各个数据库授权远程登录用户&#…

Qt6中使用Qt Charts

官方文档:Qt Charts 6.5.2 如果你是使用 CMake 构建的,则应在 CMakeLists.txt 中添加如下两行代码: find_package(Qt6 REQUIRED COMPONENTS Charts)target_link_libraries(mytarget PRIVATE Qt6::Charts) 其中 mytarget 为你的项目名称。一共…

管理类联考——数学——汇总篇——知识点突破——浓度

👊 溶液溶质溶剂;浓度 溶质 溶液 \frac{溶质}{溶液} 溶液溶质​100% 溶质 溶质 溶剂 \frac{溶质}{溶质溶剂} 溶质溶剂溶质​100%。重要等量关系 ①浓度不变准则:将溶液分成若干份,每份的浓度相等,都等于原来溶液的浓…

Python教程(13)——Python运算符详解|算术运算符|比较运算符|逻辑运算符|位运算符

Python运算符 算术运算符比较运算符赋值运算符逻辑运算符逻辑运算类型逻辑运算本质 位运算符 Python的运算符是用于执行各种操作的符号或符号组合。它们用于操作数据并进行算术、比较、逻辑和其他类型的运算。我们所熟知的加减乘除也是运算符中的一种。Python提供了多种类型的运…

无涯教程-JavaScript - COUPNCD函数

描述 COUPNCD函数返回一个数字,该数字表示结算日期之后的下一个息票日期。 语法 COUPNCD (settlement, maturity, frequency, [basis])争论 Argument描述Required/OptionalSettlement 证券的结算日期。 证券结算日期是指在发行日期之后将证券交易给买方的日期。 RequiredMa…

spring入门之环境搭建!!!

1.创建一个maven项目。 不会配置maven环境的可以看这里&#xff1a;maven的下载安装与配置环境变量&#xff01;&#xff01;&#xff01;&#xff08;全网最详细&#xff09;_明天更新的博客-CSDN博客 2.引入依赖 <dependencies><dependency><groupId>or…

Python自动化测试框架【生成测试报告】

如何才能让用例自动运行完之后&#xff0c;生成一张直观可看易懂的测试报告呢&#xff1f; 小编使用的是unittest的一个扩展HTMLTestRunner 环境准备 使用之前&#xff0c;我们需要下载HTMLTestRunner.py文件 点击HTMLTestRunner后进入的是一个写满代码的网页&#xff0c;小…

MySQL (2) DQL

目录 操作须知 1 单表查询 1.1 范围查询 1.2 模糊查询 1.3 去重查询 1.4 正则查询 1.5 替换查询 1.6 排序查询 1.7 聚合分组查询 1.7.1 聚合查询(只有1行) 1.7.2 分组查询(针对"聚合查询") 1.8 分页查询 1.9 拼接查询 2 多表查询 2.1 内连接 2.2 外连…

DT Paint Effects工具(一)

Paint Effects面板简介 Paint Effects工具 只是显示&#xff0c;和渲染无关 压力比例 物体绘画 模板笔刷设置 恢复默认设置 翻转管方向 平面绘画 共享笔刷 不同笔刷共享 选择笔刷 创建修改器 创建循环动画 笔刷弹簧 简化曲线路径 笔刷控制曲线 笔刷附件到曲线 生产压力曲线 自动…

C++:stack和queue的使用以及底层实现

stack和queue的使用以及底层实现 1.适配器模式2.stack的介绍和使用2.1stack的介绍2.2stack的使用 3.queue的介绍和使用3.1queue的介绍3.2queue的使用 4.仿函数介绍5.priority_queue的介绍和使用5.1priority_queue的介绍5.2priority_queue的使用 6.deque的介绍6.1deque的实现原理…

Java从入门到精通-数组(一)

0.思维导图 1.数组概述 • 1.1 数组的定义 在编程中&#xff0c;数组是一种用于存储多个相同类型的数据元素的数据结构。数组提供了一种有序的方式来组织和访问数据&#xff0c;每个元素都有一个唯一的索引&#xff0c;通过索引可以快速访问元素。 • 1.2 数组的重要性 数据…

状态管理艺术——借助Spring StateMachine驭服复杂应用逻辑

文章目录 1. 什么是状态2. 有限状态机概述3. Spring StateMachine4. Spring StateMachine 入门小案例4.1 接口测试 5. 总结 1. 什么是状态 在开发中&#xff0c;无时无刻离不开状态的一个概念&#xff0c;任何一条数据都有属于它的状态。 比如一个电商平台&#xff0c;一个订…

自动化测试的重要性:为何追求自动化?

为什么需要自动化测试&#xff1f; 代替手工重复操作&#xff0c;测试工程师可以花更多时间在设计全面的测试用例和新功能测试上 【代替手工重复】 提升回归测试的效率&#xff0c;适合敏捷开发过程 【提升回归效率】 更好的利用非工作时间执行测试&#xff0c;工作时间分析失…

油猴浏览器(安卓)

油猴浏览器页面设计非常简约&#xff0c;在主页上还为小伙伴们推荐了很多的常用书签&#xff0c;像油猴脚本&#xff0c;常用导航&#xff0c;新闻&#xff0c;热搜类的&#xff0c;快递查询等等&#xff0c;可以设置快捷访问&#xff0c;把常用到的一些网站设置在主页上。 浏览…

代码随想录Day_60打卡

①、柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 事例&#xff1a; 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;1…

Chrome 117 发布:新 Web 开发调试技巧都在这了!

简介&#xff1a;Chrome 更新了最新版本 Chrome 117&#xff0c;更新了很多实用的DevTools 新特性。 首先介绍大家最熟悉的Network面板&#xff0c;看看给我们带来了什么好玩的~ Network 面板改进 更快地在本地覆盖网页内容 现在&#xff0c;本地覆盖功能更加简化&#xff0…

【数据结构】二叉树基础入门

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Alibaba(商品详情)API接口

为了进行电商平台 的API开发&#xff0c;首先我们需要做下面几件事情。 1&#xff09;开发者注册一个账号 2&#xff09;然后为每个alibaba应用注册一个应用程序键&#xff08;App Key) 。 3&#xff09;下载alibaba API的SDK并掌握基本的API基础知识和调用 4&#xff09;利…

解锁“高级特权” 偷偷用。千万别声张

现在的手机修图软件&#xff0c;功能是越来越强大了。之前需要用到电脑端PS的功能&#xff0c;现在手机上的修图软件就能实现&#xff0c;还是一键处理的傻瓜操作。 你离P图大神只差一个APP——「大神批图」&#xff0c;已解锁限制&#xff0c;安装即是VIP。 功能非常丰富&…

多元共进|创新技术提供助力,共创增长机遇

谷歌致力于推动业务和应用长效增长 助力开发者优化用户体验 一起来了解 2023 Google 开发者大会上 谷歌如何将创新技术 融入商业合作和智能家居生态 用技术赋能业务增长 以科技点亮智慧生活 谷歌坚持以 AI 为技术核心&#xff0c;不断投入研究&#xff0c;并将其应用至各类场景…