[闻缺陷则喜]编码与实现方式

简介: [闻缺陷则喜]编码与实现方式

人类记忆字母、数字、汉字、符号需要记住读音或笔顺;计算机制只需要记录编号。


ASCII码

文本编码方式的基础是ASCII码,它是一个7位的编码标准,包括26个小写字母、26个大写字母、10个数字、32个符号、33个控制代码和一个空格,共128个代码。其中ASCII码是大多数常用编码的基础。


ANSI

ANSI(美国国家标准协会)通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符。超出此范围的使用0x80~0xFFFF来编码,即扩展的ASCII编码。在简体中文Windows操作系统中,ANSI 编码代表 GB2312编码(国标码),GBK是GB2312的扩展;在繁体中文Windows操作系统中,ANSI编码代表Big5(大五码);在日文Windows操作系统中,ANSI 编码代表 JIS 编码。


一个汉字可能同时存在于GB2312、Big5、JIS中,他们的编码不一定相同。“就”在GB2312中的编码是{ 0xbe, 0xcd },在Big5中是{ 0xb4, 0x4e }。“義”在GB2312的编码是{ 0xc1, 0x78 },在Big5中是{ 0xb8, 0x71 }。由于是先有繁体字后有简体字,所以GB2312中有许多繁体字,Big5中我暂没发现简体字。


GB2312和Big5除ASCLL码一个字节外,其它都是两个字节。GB2312,范围:0xA1A1(41377) - 0xFEFE(65278),汉字范围:0xB0A1(45217) - 0xF7FE(63486)。Big5码,“高位字节”使用了0x81-0xFE,“低位字节”使用了0x40-0x7E,及0xA1-0xFE。


Unicode

Unicode,万国码、统一码,可以同时支持多国语言。


实现方式

目前(2021年8月)有99089个字符,其中包括71226个汉字。2个字节最多只能表示6万多个字所以需要4位。


UTF32,所有字符都是4个字节。


UTF16大部分字符(往往是常用字符)2字节,少量4字节。Unicode标准规定U+D800..U+DFFF不对应于任何字符,所以以D8到DF开头的是4字节,否则是2字节。


UTF8理论上最多需要6个字节,目前需要1到4个字节。除首字节外,其它字节前两个二进制位一定是10。只需要1个字节时,首字节第一个二进制位一定是0;需要两个字节时,首字节前3个二进制位一定是110;需要三个字节时,首字节前4个二进制位一定是1110;需要四个字节时,首字节前5个二进制位一定是11110。1个字节有7个有效二进制位,2个字节有11个二进制位,3个字节有16个二进制位,4个字节有21个二进制位。


转换

C#利用System.Text.Encoding类转换。string、char是小端utf16编码。C++用MultiByteToWideChar和WideCharToMultiByte。gb2312和buf8是多字节(char),utf16是宽字节。VC中多字节是gb2312编码,宽字节是小端UTF16编码。测试环境:Win7+VS2012。


相关文章
|
存储 缓存 自然语言处理
【Elasticsearch专栏 05】深入探索:Elasticsearch在处理非结构化数据时,倒排索引有何优势
在处理非结构化数据时,倒排索引的优势在于其高效的查询性能,能够迅速匹配文本中的关键词,实现全文搜索。此外,倒排索引支持复杂的查询操作,可扩展性强,且通过压缩技术优化存储空间。这些特点使倒排索引成为处理非结构化数据的理想选择。
242 1
|
9月前
|
数据采集 Web App开发 存储
深度解析:使用 Headless 模式 ChromeDriver 进行无界面浏览器操作
本文介绍了基于无界面浏览器(如ChromeDriver)和代理IP技术的现代爬虫解决方案,以应对传统爬虫面临的反爬机制和动态加载内容等问题。通过Selenium驱动ChromeDriver,并结合亿牛云爬虫代理、自定义Cookie和User-Agent设置,实现高效的数据采集。代码示例展示了如何配置ChromeDriver、处理代理认证、添加Cookie及捕获异常,确保爬虫稳定运行。性能对比显示,Headless模式下的ChromeDriver在数据采集成功率、响应时间和反爬规避能力上显著优于传统爬虫。该方案广泛应用于电商、金融和新闻媒体等行业。
510 0
深度解析:使用 Headless 模式 ChromeDriver 进行无界面浏览器操作
|
10月前
|
机器学习/深度学习 PyTorch 调度
内部干货 | 基于华为昇腾910B算力卡的大模型部署和调优-课程讲义
近日上海,TsingtaoAI为某央企智算中心交付华为昇腾910B算力卡的大模型部署和调优课程。课程深入讲解如何在昇腾NPU上高效地训练、调优和部署PyTorch与Transformer模型,并结合实际应用场景,探索如何优化和迁移模型至昇腾NPU平台。课程涵盖从模型预训练、微调、推理与评估,到性能对比、算子适配、模型调优等一系列关键技术,帮助学员深入理解昇腾NPU的优势及其与主流深度学习框架(如PyTorch、Deepspeed、MindSpore)的结合应用。
3920 13
|
数据采集 数据可视化 大数据
R语言在统计分析中的应用与实践
【7月更文挑战第30天】R语言以其强大的统计分析能力和开源自由的特性,在统计分析领域发挥着重要作用。无论是基础的描述性统计、推断性统计,还是复杂的回归分析、时间序列分析和生存分析,R语言都提供了丰富的函数和包来支持。通过学习和掌握R语言,数据分析师和研究者可以更加高效地进行数据分析,获取有价值的信息和结论。未来,随着大数据和云计算等新兴技术的发展,R语言的应用前景将更加广阔。
|
UED Python
【Python】已解决:FileNotFoundError: [Errno 2] No such file or directory: ‘D:\1. PDF’
【Python】已解决:FileNotFoundError: [Errno 2] No such file or directory: ‘D:\1. PDF’
762 0
|
安全 API 调度
「架构」嵌入式鸿蒙架构
**鸿蒙嵌入式架构概览** HarmonyOS,华为的分布式操作系统,应用于嵌入式设备,以微内核、跨平台能力和组件化设计著称。核心功能包括设备统一管理、分布式软总线及安全机制。特点:低时延、高安全性、易开发。优点在于灵活性、扩展性和性能,但需构建生态、增加开发者资源和争取市场认可。采用模块化设计,支持多语言开发,利用分布式通信协议和硬件抽象层,通过Huawei AppGallery推动应用生态。
859 0
|
JSON 测试技术 API
API接口测试指南:确保接口稳定性与可靠性的实践
API接口测试是确保软件产品质量的重要组成部分。通过遵循本指南中的测试步骤和最佳实践,开发者可以有效地验证API的功能、性能和安全性,从而提升软件的整体质量和用户满意度。
|
Java 数据库 微服务
spring cloud总览和架构图
spring cloud总览和架构图
1340 0
spring cloud总览和架构图
|
前端开发 数据库 Python
Django入门全攻略:从零搭建你的第一个Web项目
Django入门全攻略:从零搭建你的第一个Web项目
|
弹性计算 人工智能 调度
秒级弹性,探索弹性调度与虚拟节点如何迅速响应瞬时算力需求
秒级弹性!探索弹性调度与虚拟节点如何迅速响应瞬时算力需求?
49972 1