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

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

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

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

在这里插入图片描述

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.mzph.cn/diannao/41660.shtml

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

相关文章

探索人工智能在电子商务平台与游戏发行商竞争中几种应用方式

过去 12 年来,电脑和视频游戏的发行策略发生了巨大变化。数字游戏的销量首次超过实体游戏的销量 在20132020 年的封锁进一步加速了这一趋势。例如,在意大利,封锁的第一周导致数字游戏下载量 暴涨174.9%. 展望未来,市场有望继续增…

着急,为啥AI叫好不叫座啊?

关注卢松松,会经常给你分享一些我的经验和观点。 李彦宏在2024世界人工智能大会上说: 没有应用,光有基础模型,不管是开源还是闭源都一文不值,所以我从去年下半年开始讲,大家不要卷模型了,要去…

【AI应用探讨】—多层感知机应用场景

目录 一、计算机视觉 二、自然语言处理 三、推荐系统 四、金融风控 五、医疗健康 六、工业制造 七、其他领域 一、计算机视觉 在计算机视觉领域,多层感知机(MLP)因其强大的非线性建模能力而被广泛应用于各种图像处理任务中。具体应用…

SessionStorage和loacalStorage区别

一、SessionStorage 1.生命周期 SessionStorage中存储的数据在当前会话期间有效,即当页面关闭时数据将被清除。 2.作用域 SessionStorage中的数据仅在当前标签页或窗口中有效,不同标签页或窗口之间无法共享数据。 3.存储容量 SessionStorage的存储…

java面试-java基础(上)

文章目录 一、什么是Java?特点?二、什么是JVM、JDK、JRE?三、java跨平台实现原理四、java数据类型有哪些?五、char能不能存一个中文汉字?六、存在数字i加1小于i或者i减1小于i?七、什么是自动类型转换与强制类型转换?八、什么是装/拆箱&am…

数学不好能搞人工智能吗?

很遗憾,不能。 人工智能(AI)实际上是一个将数学、算法理论和工程实践紧密结合的领域。AI 扒开来看就是算法,也就是数学、概率论、统计学、各种数学理论的体现。 新的时代,程序员想要跨入 AI 之门,只要稍微…

13 - Python网络编程入门

网络编程入门 计算机网络基础 计算机网络是独立自主的计算机互联而成的系统的总称,组建计算机网络最主要的目的是实现多台计算机之间的通信和资源共享。今天计算机网络中的设备和计算机网络的用户已经多得不可计数,而计算机网络也可以称得上是一个“复…

Springweb详解

Springweb详解 一.springweb介绍 1.1 SpringWEB 特点  SpringWEB 是 spring 家族原生产品,与 IOC 容器等基础设施无缝对接.  基于原生的 Servlet,提供了一个前端控制器 DispatcherServlet ,开发者 无须额外开发控制器对象.  可以自…

【SQL】聚簇索引与⾮聚簇索引的区别

聚簇索引(Clustered Index)和非聚簇索引(Non-Clustered Index)是数据库索引的两种主要类型,它们在数据存储和访问方式上有显著区别。 聚簇索引 数据存储顺序:聚簇索引将数据行按照索引键的顺序进行存储。…

VSCode打开其它IDE项目注释显示乱码的解决方法

问题描述:VSCode打开Visual Studio(或其它IDE)工程,注释乱码,如下图所示: 解决方法:点击VSCode右下角的UTF-8,根据提示点击“通过编码重新打开”,再选择GB2312&#xff0…

R语言数据分析案例42-基于时间序列模型对股票预测分析和研究

一、研究背景和意义 随着全球经济的不断发展和数字化转型的加速推进,科技公司在全球市场中扮演着日益重要的角色。其中,中国的阿里巴巴集团作为全球最大的电子商务公司之一,其业务范围覆盖电子商务、云计算、金融科技等多个领域。由于其在中…

AI革命:RAG技术引领未来智能

AI革命:RAG技术引领未来智能 在人工智能的浪潮中,一种名为RAG(Retrieval-Augmented Generation)的技术正在悄然改变我们的世界。这种技术通过整合外部知识库,极大地增强了大型语言模型(LLM)的性能,为智能助手、聊天机器人等应用带来了革命性的提升。 1 突破性的RAG技…

【问题记录】Jenkins Pipeline读取变量的各种方法

方法一 输出docker image镜像标签给IMAGE_TAG def IMAGE_TAG sh(script: docker images | grep ${SERVER_NAME} | grep $NAME_SPACE | awk {print $2}|grep ${BUILD_NUMBER}, returnStdout: true) 另外,如果想输出docker image命令执行结果给IMAGE_TAG def IMAG…

【python】PyQt5可视化开发,如何设计鼠标显示的形状?

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

通信施工安全员B类测试题含答案

1.全国人民代表大会常务委员会关于修改<中华人民共和国安全生产法>的决定》由中华人民共和国第十二届全国人民代表大会常务委员会第十次会议通过&#xff0c;自( )起施行。 A、2002年11月1日 B、2014年8月31日C、2014年12月1日(正确答案) D、2015年1月01日 2.生产经营单…

JMeter:循环控制器While Controller的用法小结

前言 在之前的博文“JMeter案例优化&#xff1a;测试执行结束后&#xff0c;实现tearDown的几种方式”中&#xff0c;尝试了JMeter的循环控制器While Controller&#xff0c;发现还有点小复杂&#xff0c;将学习过程记录下来&#xff0c;免得遗忘。 注&#xff1a;我使用的是…

《C++20设计模式》外观模式

文章目录 一、前言二、实现1、UML类图2、实现 一、前言 一句话总结外观模式&#xff1a;简化接口&#xff0c;或者简化流程。&#x1f642; 相关代码可以在这里&#xff0c;如有帮助给个star&#xff01;AidenYuanDev/design_patterns_in_modern_Cpp_20 二、实现 原来需要很…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-54~55循环神经网络的从零开始实现和简洁实现

54循环神经网络的从零开始实现 import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l import matplotlib.pyplot as plt import liliPytorch as lp# 读取H.G.Wells的时光机器数据集 batch_size, num_steps 32, …

多特征线性回归

目录 一、多特征符号意义说明&#xff1a;二、多特征模型表示&#xff1a;三、Numpy向量表示、内积计算&#xff1a;1.向量表示&#xff1a;2.内积计算&#xff1a; 四、多元线性回归梯度下降算法&#xff1a; 一、多特征符号意义说明&#xff1a; x下标j&#xff1a;表示第j个…

怎么做外贸推广:10个详细教程和工具

1. 介绍 1.1 什么是外贸推广 外贸推广指的是将产品或服务推广到国际市场的过程。它的主要目的是吸引海外客户&#xff0c;增加销售额&#xff0c;并扩大企业的全球影响力。外贸推广不仅仅是销售产品&#xff0c;它还包括品牌建设、市场研究和客户关系管理。 谷歌外贸推广案例…