Plantre Plantre
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机组成原理

    • 为什么一个字节是8位
    • 数据的表示和传输

      • 字符编码
    • 操作系统

    • 计算机网络

    • 设计模式

    • Java

    • Spring

    • SpringCloud

    • MySQL

    • Redis

    • 分布式

    • Zookeeper

    • Dubbo

    • Kafka

    • 数据结构

    • 算法

    • OJ

    • 从道家哲学看计算机?
    • 后端
    • 计算机组成原理
    • 数据的表示和传输
    plantre
    2025-05-26
    目录

    字符编码

    # 字符编码详解

    字符编码是计算机存储、处理和传输文本的核心技术,它通过规则将字符(如字母、符号、汉字)映射为二进制数据。以下是主流字符编码的分类、特点及典型应用场景:


    # 一、 基础编码标准

    1. ASCII(美国信息交换标准码)
      • 范围:7 位编码,支持 128 个字符(英文、数字、标点及控制符)。
      • 特点:简单高效,但仅限英语字符。例如,字母 A 的编码为 65(十进制)或 01000001(二进制)。
      • 扩展 ASCII:8 位编码(如 ISO-8859-1),支持西欧语言字符(如 é、ñ),但无法覆盖非拉丁语言。
    2. GB 系列(中文编码)
      • GB2312:双字节编码,支持 6763 个简体汉字及标点,通过区位码(如“啊”为 1601)实现字符映射。
      • GBK:扩展 GB2312,支持 2.1 万个简繁体汉字及部分日韩字符,兼容性更强。
      • GB18030:多字节编码(1-4 字节),覆盖 7 万+汉字及少数民族文字,中国国家标准。
    3. Big5(大五码)
      • 范围:双字节编码,支持 13060 个繁体汉字,广泛应用于台湾、香港地区。
      • 局限:与 GBK 不兼容,可能导致跨地区文本乱码。

    # 二、 多语言统一编码:Unicode 系列

    1. Unicode 字符集
      • 目标:覆盖全球所有语言字符(超 140,000 个),每个字符分配唯一码点(如“汉”为 U+6C49)。
      • 实现方式:通过 UTF-8、UTF-16、UTF-32 等编码方案转换存储。
    2. UTF-8(Unicode 转换格式-8)
      • 编码规则:可变长度(1-4 字节),兼容 ASCII(如 A 为 01000001),汉字通常占 3 字节(如“中”为 E4B8AD)。
      • 优势:节省空间、通用性强,互联网首选(占全球网页 97% 以上)。
    3. UTF-16
      • 编码规则:固定 2 字节(基本多文种平面)或 4 字节(辅助平面),适合东亚语言高效处理。
      • 场景:Windows 系统内部、Java 字符串默认编码。
    4. UTF-32
      • 特点:固定 4 字节/字符,编码简单但空间利用率低,适用于特定底层系统。

    # 三、 编码对比与选择建议

    编码方式 字节数 支持范围 典型场景
    ASCII 1 字节 英语、基本符号 早期文本处理、嵌入式设备
    GBK 2 字节(常用字) 简繁体中文、部分日韩字符 中文操作系统、本地化软件
    UTF-8 1-4 字节 全球所有语言 网络传输、多语言混合存储
    UTF-16 2/4 字节 全球所有语言 东亚语言开发、系统内核处理
    Big5 2 字节 繁体中文 台湾、香港地区文档

    # 四、 编码问题与解决方案

    1. 乱码成因
      • 编码不一致(如 UTF-8 文本用 GBK 解码)。
      • 示例:邮件传输中,非 ASCII 编码(如 GB2312)未经 Base64 转码导致高位截断。
    2. 解决策略
      • 统一编码标准:多语言场景强制使用 UTF-8。
      • 显式声明编码:HTTP 头部设置 Content-Type: text/html; charset=utf-8。
      • 转码工具:使用 iconv 或编程库(如 Python 的 encode()/decode())转换编码格式。

    # 五、 特殊编码应用

    1. Base64
      • 作用:将二进制数据(如图片)转为 ASCII 文本,避免传输损坏。
      • 示例:邮件附件、HTTP Basic 认证。
    2. URL 编码
      • 规则:非安全字符(如空格)转为 % 开头的十六进制值(如 %20)。

    # 总结

    选择字符编码需综合考虑语言支持、存储效率和兼容性:

    • 多语言环境:优先 UTF-8(如 Web 开发)。
    • 纯中文场景:GBK 或 GB18030 更高效(如本地化软件)。
    • 历史系统维护:需适配旧编码(如 Big5、ISO-8859-1)。

    如需完整编码对照表或技术实现细节,可参考 Unicode 官网 (opens new window) 或各语言标准文档。

    编辑 (opens new window)
    上次更新: 2025/06/10, 09:18:05
    为什么一个字节是8位
    UNIX socket和TCP-IP有什么区别

    ← 为什么一个字节是8位 UNIX socket和TCP-IP有什么区别→

    最近更新
    01
    集成loki
    07-04
    02
    TCP的ESTABLISHED是什么意思
    06-24
    03
    安装1panel
    06-24
    更多文章>
    Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式