开发必备基础知识【字符编码合集】

开发必备基础知识【字符编码合集】

大家在日常开发交流中会发现,别人那里运行的好好的文件,在你电脑上却无法编译,甚至出现一堆莫名其妙的字符,比如:���

  • 程序中经常遇到一些关于乱码的问题,而产生乱码的原因就是因为计算机直接存储字符时要把字符转为二进制,这其中不同的转换规则就对应不同的编码方式,所以要不出现乱码就必须编码方式和解码方式要保持一致。

在这里插入图片描述

ASCII:表示英文字母、数字、标点符号

是一种使用7个(能表示128个字符)或8个(能表示256个字符,ASCII扩展)二进制位进行编码的方案(美国信息交换标准(代)码),最多可以给256个字符(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值,ASCII码正是最早用来将128字符的编码到计算机里面的一套编码

  • 简介:ASCII是最基本的字符编码标准,它使用7位二进制数来表示128种可能的字符,包括英文大小写字母、数字、标点符号和一些控制字符。
  • 特点:由于只支持128个字符,不包含任何非英语字符,如中文、日文等。

在这里插入图片描述

ISO8859-1(latin-1或西欧语言):在ASCII基础上支持编码拉丁字符

ISO8859-1:又称latin-1或“西欧语言”,是国际标准化组织内iso/iec,是ASCII的扩充,可以编码一些较为生僻的拉丁字符。

  • 简介:ISO8859-1是ISO Latin-1字符集的实现,使用8位编码,扩展了ASCII,额外提供了128个字符,主要用于西欧语言。
  • 特点:虽然比ASCII范围大,但同样不支持中文等多字节字符。

GB2312(属于ANSI):支持简体中文

GB2312也是ANSI编码里的一种,对ANSI编码最初始的ASCII编码进行扩充,当计算机来到中国ISO8859-1就不够用了,为了满足国内在计算机中使用汉字的需要,中国国家标准总局发布了一系列的汉字字符集国家标准编码,统称为GB码,或国标码,几乎所有的中文系统和国际化的软件都支持GB2312。

  • 简介:GB2312是中国国家标准简体中文字符集,使用双字节编码,涵盖了6763个常用汉字及一些其他字符。
  • 特点:专为中国大陆设计,支持简体汉字,但不包括繁体字和大量生僻字。

ANSI:泛指遵循ISO标准的字符集

在不同的上下文中,“ANSI”编码可能有不同的含义。通常在中国大陆,人们提到“ANSI编码”时,实际上指的是GB2312或其后续版本GBK的Windows编码。但在更广泛的意义上,ANSI指代遵循ISO标准的字符集,不特指某一套编码。

GBK:支持简体、繁体中文

GB2312的扩充,把BIG5码的思想融入进来,既可以表示简体中文也可以表示繁体中文,
GBK采用双字节表示。

  • 简介:GBK是对GB2312的扩展,兼容GB2312,增加了对繁体字的支持和其他字符,总共收录了超过2万多个字符。
  • 特点:支持简繁体汉字,适用范围更广。GBK编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的。

GB18030:支持简体、繁体、少数名族语言(国标码)

  • 简介:GB18030是中国最新的汉字编码国家标准,兼容GBK,并进一步扩展字符集,支持更多的少数民族文字和CJK统一汉字(中日韩统一表意文字),总字符数超过7万个。
    - CJK:代表“中日韩”(Chinese, Japanese, Korean),是指这三个语言共享的一套汉字和其他字符的集合。CJK字符在Unicode中被组织在一起,主要是为了统一编码这些语言中共同使用的汉字,减少编码上的重复。
  • 特点:全面覆盖了Unicode的字符集,是目前最全面的中文编码标准。

BIG5(大五码):台湾厂商制定的繁体中文编码

  • 简介:BIG5是一种主要为繁体中文设计的传统字符编码方案,广泛应用于台湾和香港地区。它使用双字节编码,第一个字节的范围是0x81至0xFE,第二个字节的范围是0x40至0x7E以及0xA1至0xFE,总共可以表示约13053个字符,包括繁体汉字、标点符号、希腊字母、日文片假名等。
  • 特点:BIG5并不支持简体中文字符,且与其他编码系统如GBK或GB18030不兼容。

Unicode:字符编码规范(统一全球编码),比ANSI更全面

  1. Unicode与ANSI关系:
  • 历史背景:在Unicode出现之前,ANSI编码作为地区性编码标准广泛应用于不同国家和地区,用于满足特定语言环境下的字符表示需求。Unicode则是在全球化交流需求增加的背景下,为了解决不同编码系统间的兼容性问题而发展起来的统一字符编码标准。
  • 过渡:随着Unicode的普及,许多系统和应用程序逐渐从使用地区性的ANSI编码转向支持Unicode,以更好地处理国际化的文本数据。在某些情况下,ANSI编码可能被视为Unicode的一个子集或特例,尤其是在指代Windows系统中与本地语言相关的编码时(如简体中文的GBK、繁体中文的BIG5等)
  1. 区别:
  • 编码范围:ANSI编码(实际上是各个地区的特定编码,如GBK、BIG5等)通常只能覆盖有限的语言字符集,每个地区或语言的编码标准不同,而Unicode旨在涵盖地球上所有已知字符,包括各种语言、符号、表情等,拥有超过137,000个字符的位置。
  • 字符表示:ANSI编码大多采用单字节或双字节混合的方式,而Unicode最原始的形式(UCS-2)使用固定两字节表示一个字符,后来的Unicode版本(UTF-16)在基本多语言平面上也是两字节,但扩展字符则需要四字节。UTF-8,作为Unicode的一种实现,使用可变长度编码,从1到4个字节不等。
  • 国际化支持:Unicode由于其广泛的字符覆盖范围,天然支持多语言环境,解决了不同语言文本混排时的编码问题。而ANSI编码因地区而异,不便于跨语言环境的信息交换。
  • 兼容性:ANSI编码与ASCII编码在低字节范围内兼容,但不同ANSI编码间不兼容。Unicode则提供了全球统一的字符映射,提高了跨平台和跨系统的文本兼容性。

UTF-8:Unicode的实现(根据字符不同实现可变长编码)

  • 简洁:UTF-8是Unicode字符集的一种可变长度字符编码方式,是最常用的Unicode实现方式之一,特别是在互联网上。
  • 特点:UTF-8 支持全球几乎所有语言和符号的编码,UTF-8使用1到4个字节来表示一个字符,根据字符的不同,其字节数也随之变化。对于ASCII字符(U+0000至U+007F),UTF-8使用单字节编码,与ASCII编码兼容。这种设计使得UTF-8既高效又兼容性好,适用于存储和传输多语言文本数据。【UTF-8一个英文字符占用一个字节的存储空间,一个中文(含繁体)占用三个字节的存储空间】
  • 拓展utf8mb4:大家在MySQL建表时,会发现有一个utf8mb4编码,这其实是MySQL数据库中对UTF-8编码的一个特定支持形式,主要目的是为了完全支持存储四字节的Unicode字符,特别是包括表情符号(Emoji)在内的补充字符

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

科普文:如何进行有效沟通

概叙 你会沟通吗? 你知道正确的沟通应该怎么做吗? 在日常生活和工作中,不会沟通带来的困扰是否让你感同身受? 在工作中,你是否因表达不清让观点无法被同事理解和采纳,影响职业发展? 与上级交流是…

开源全新H5充值系统源码/自定义首页+充值页面/灵活对接上游渠道接口

开源全新H5充值系统源码,系统基于thinkphp框架开发,功能已全完善,可灵活对接其他上游渠道接口,默认对接了大猿人接口,另外可无限制自定义创建充值页面,首页支持后台自定义修改,支持三级分销&…

STM32嵌入式工业机器人控制系统教程

目录 引言环境准备工业机器人控制系统基础代码实现:实现工业机器人控制系统 4.1 数据采集模块 4.2 数据处理与分析 4.3 运动控制系统实现 4.4 用户界面与数据可视化应用场景:工业自动化与优化问题解决方案与优化收尾与总结 1. 引言 工业机器人控制系统…

Java基础(六)——继承

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…

计算机应用数学--第二次作业

第二次作业计算题编程题 第二次作业 计算题 给定图 G G G(如图 1,图中数值为边权值),图切割将其分割成多个互不连通的⼦图。请使⽤谱聚类算法将图 G G G 聚类成 k 2 k 2 k2 类,使得: (a) RatioCut 最…

《向量数据库指南》——Milvus Cloud索引增强如何提升 RAG Pipeline 效果?

索引增强 1.自动合并块 在建立索引时,分两个粒度搭建,一个是chunk本身,另一个是chunk所在的parent chunk。先搜索更细粒度的chunks,接着采用一种合并的策略——如果前k个子chunk中超过n个chunk属于同一个parent chunk&#xff0c…

架构师学习理解和总结

1.架构设计理念 2.架构方法论 2.1需求分析 2.1.1常见需求层次 2.1.2 常见需求结果 2.1.3 需求与架构关系 2.2 领域分析 2.3 关键需求 2.4 概念架构设计 2.5 细化架构设计 2.6 架构设计验证 3.架构设计工具 3.1 DDD领域建模 3.2 41视图分析法 3.3 UML设计工具 4.架构师知…

Pathformer: multi-scale transformer

文章目录 摘要1 引言贡献 2 相关工作时间序列预测时间序列的多尺度建模 3 方法论3.1 多尺度变压器块多尺度划分双重注意力 3.2 自适应路径多尺度路由器多尺度聚合器 摘要 用于时间序列预测的变压器模型主要针对有限或固定尺度的时间序列进行建模,这使得捕捉跨越不同…

竞赛选题 卷积神经网络手写字符识别 - 深度学习

文章目录 0 前言1 简介2 LeNet-5 模型的介绍2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 在线手写识别7 最后 0 前言…

如何实现一套键盘鼠标控制两台计算机(Mouse Without Borders快速上手教程)

需求背景 当我们需要同时使用一台主机和一台笔记本的时候,如果使用两套键盘和鼠标分别操作各自的系统,非常地不便捷且非常占据桌面空间。那么如何使用一套键盘鼠标控制两台电脑呢? 需求实现 软件说明 我们可以使用微软官方的一款软件Mous…

nodejs 获取客服端ip,以及获取ip一直都是127.0.0.1的问题

一、问题描述 在做登录日志的时候想要获取客户端的ip, 网上查了一下 通过 req.headers[x-forwarded-for] || req.connection.remoteAddress; 获取, 结果获取了之后不管是开发环境,还是生产环境获取到的一直都是 127.0.0.1,这是因为在配置N…

代码随想录算法训练营第22天|LeetCode 77. 组合、216.组合总和III、17.电话号码的字母组合

1. LeetCode 77. 组合 题目链接:https://leetcode.cn/problems/combinations/description/ 文章链接:https://programmercarl.com/0077.组合.html 视频链接:https://www.bilibili.com/video/BV1ti4y1L7cv 思路:利用递归回溯的方式…

开启视频创作新篇章!腾讯发布MimicMotion:单张图像+简单姿势,瞬间“活”化视频。

腾讯和上交发布了一个根据图片生成跳舞视频的项目MimicMotion。效果同时支持面部特征和唇形同步,不止可以搞跳舞视频,也可以做数字人。 MimicMotion方案优化的内容有: 引入基于置信度的姿态引导机制。确保生成的视频在时间上更加连贯流畅。 …

计算机图形学入门25:BRDF的测量

1.前言 BRDF(双向反射分布函数)可以用各种各样的材质去描述,但是这只是一种基于物理的描述或者近似,那什么是真正的BRDF?只有测出来的才是真正的。 为什么要测出BRDF?因为之前所描述的BRDF并不准确。如下图所示,以菲涅…

C++——模板详解(下篇)

一、非类型模板参数 模板参数分为类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之后的参数类型名称。 非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类&#…

LabVIEW与OpenCV图像处理对比

LabVIEW和OpenCV在图像处理方面各有特点。LabVIEW擅长图形化编程、实时处理和硬件集成,而OpenCV则提供丰富的算法和多语言支持。通过DLL、Python节点等方式,OpenCV的功能可在LabVIEW中实现。本文将结合具体案例详细分析两者的特点及实现方法。 LabVIEW与…

解决Docker Desktop启动异常 Docker Desktop- WSL distro terminated abruptly

异常 当打开Docker Desktop时候,启动docker引擎时,提示 加粗样式文本信息 Docker Desktop - WSL distro terminated abruptly A WSL distro Docker Desktop relies on has exited unexpectedly. This usually happensas a result of an external entit…

二叉树中的前序、中序、后续遍历(C语言)

目录 前序遍历概念代码递归分解图 中序遍历概念代码 后序遍历概念代码 前序遍历 概念 概念: 前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。 简单点来说就是:根 左子树 右子树的访问顺序 例如:…

2、图形验证码

1、图形验证码设计 1.1思路 现今,市面上的图形验证码付费的,免费的多种多样,主要形式有滑动拼图、文字点选、语序点选、字体识别、空间推理、智能随机等。 而处理也分为web端和sever端两部分 此处以免费的kaptcha 为例,进行数字图…

Vatee万腾平台:智能生活的新选择

在科技飞速发展的今天,智能生活已经不再是遥不可及的梦想,而是逐渐渗透到我们日常生活的方方面面。Vatee万腾平台,作为智能科技领域的佼佼者,正以其创新的技术、丰富的应用场景和卓越的用户体验,成为智能生活的新选择&…