当前位置: 首页 > news >正文

计算机编码

计算机编码是计算机处理、存储和传输文本信息的规则,其核心是将人类可理解的字符(如文字、符号、数字)转换为计算机能识别的二进制(0和1)。不同场景和语言需要不同的编码方案,以下是常见的编码方式及特点:

一、ASCII 编码(基础编码)

  • 全称:American Standard Code for Information Interchange(美国信息交换标准代码)。
  • 适用范围:主要用于英文及西欧语言,包含大小写字母、数字、标点符号和控制字符(如换行、回车)。
  • 编码规则
    • 1个字节(8位) 表示,实际只使用前7位(0-127),第8位为0(用于校验)。
    • 共定义了128个字符,例如:A 对应 65(二进制 01000001),0 对应 48。
  • 局限性:无法表示中文、日文等非拉丁字符。

二、GB2312 与 GBK(中文编码)

为解决中文显示问题,中国制定了以下编码:

  1. GB2312(1980年)

    • 收录 6763个简体汉字、682个符号,覆盖常用中文。
    • 编码规则:
      • 中文用 2个字节 表示,每个字节的最高位为1(区别于ASCII的0)。
      • 兼容ASCII:英文仍用1个字节(同ASCII),中文用2个字节。
  2. GBK(1995年,扩展GB2312)

    • 在GB2312基础上扩展,收录 21003个汉字(含繁体),支持更多生僻字。
    • 编码规则:兼容GB2312,同样用2个字节表示中文,且与GB2312编码不冲突。

三、Unicode 与 UTF-8(全球通用编码)

由于各国编码不兼容(如中文GBK和日文Shift_JIS冲突), Unicode 应运而生:

  1. Unicode(统一码)

    • 目标:为全球所有字符(无论语言)分配唯一的二进制编码,实现“一码通”。
    • 编码范围:从0到0x10FFFF,可表示超过100万个字符,包含中文、日文、韩文、 emoji 等。
    • 局限性:直接存储Unicode会浪费空间(如英文也需2-4字节),因此需要“传输和存储方案”。
  2. UTF-8(Unicode的实现方式)

    • 特点:可变长度编码,根据字符不同用1-4字节表示,兼顾节省空间和兼容性。
    • 编码规则:
      • 英文/数字:1字节(与ASCII完全兼容),例如 A 仍为 65。
      • 中文:通常用3字节表示(如“中”对应 0xE4B8AD)。
      • 生僻字或 emoji:可能用4字节。
    • 优势:是目前互联网、操作系统(如Linux、macOS)和编程语言的主流编码,避免乱码问题。

四、其他常见编码

  • ISO-8859系列:针对欧洲语言的编码(如ISO-8859-1支持西欧语言),但不支持中文。
  • UTF-16/UTF-32:Unicode的其他实现方式,UTF-16用2或4字节,UTF-32固定4字节,空间占用较大,多用于Windows系统内部或Java等语言。
  • BIG5:中国台湾、香港地区使用的繁体中文编码,与GBK不兼容。

五、编码相关问题

  1. 乱码原因:字符存储时用A编码,读取时误用B编码(如GBK文本用UTF-8打开)。
  2. 解决方法:统一编码为UTF-8(兼容性最好),在文件、网页、数据库中明确指定编码格式。

例如,HTML中需在 <head> 声明编码:<meta charset="UTF-8">,确保浏览器正确解析。

理解编码的核心是:字符→二进制的映射规则,不同编码的差异在于映射范围和存储效率。UTF-8因平衡了兼容性和空间,成为当前最广泛的编码标准。

http://www.dtcms.com/a/299337.html

相关文章:

  • Linux权限机制:RUID/EUID/SUID与进程安全
  • 排序算法,咕咕咕
  • 【Zephyr】Window下的Zephyr编译和使用
  • window下MySQL安装(三)卸载mysql
  • PYTHON从入门到实践-16数据视图化展示
  • Rust Web框架性能对比与实战指南
  • 数据结构 二叉树(3)---层序遍历二叉树
  • SQLite 子查询详解
  • 告别复杂配置!Spring Boot优雅集成百度OCR的终极方案
  • C语言基础10——函数
  • Qt 与 WebService 交互开发
  • Linux学习 韦东山IMX6ULL(一)搭建环境并编译程序
  • SQL Developer Data Modeler:一款免费跨平台的数据库建模工具
  • 强化学习(第三课第三周)
  • Rust赋能土木工程数字化
  • AUTOSAR进阶图解==>AUTOSAR_SRS_TimeService
  • Raft 协议 Paxos协议 和zk协议的特点和异同
  • 【Pandas】pandas Index objects Index.shape
  • 【温度传感器】热电偶、热敏电阻、热电阻、热成像仪原理及精度解析
  • ASP.NET Core MVC中taghelper的ModelExpression详解
  • .NET Core中的配置系统
  • 记录和分享抓取的数字货币和大A时序数据
  • 去中心化时代的通信革命:briefing与cpolar技术融合带来的安全范式革新
  • AI代理性能提升实战:LangChain+LangGraph内存管理与上下文优化完整指南
  • 如何创建或查看具有 repo 权限的 GitHub 个人访问令牌(PAT)
  • kafka的消费者负载均衡机制
  • 《人性的弱点》重构【01】
  • Java:采用mybatis+pagehealper优雅的实现分页功能
  • Flutter 提取图像主色调 ColorScheme.fromImageProvider
  • Go 的时间包:理解单调时间与挂钟时间