[导读]1.读取UTF-8编码文本原理首先了解UTF-8的编码方式,UTF-8采用可变长编码的方式,一个字符可占1字节-6字节,其中每个字符所占的字节数由字符开始的1的个数确定,具体的编码方式如下:U-00000000–U-0000007F:0xxxxxxxU-00000080–U-00...
1.读取 UTF-8 编码文本原理首先了解 UTF-8 的编码方式,UTF-8 采用可变长编码的方式,一个字符可占 1 字节 -6 字节,其中每个字符所占的字节数由字符开始的 1 的个数确定,具体的编码方式如下:U-00000000 – U-0000007F: 0xxxxxxx
U-00000080 – U-000007FF: 110xxxxx 10xxxxxx
U-00000800 – U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 – U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 – U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 – U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
因此,对于每个字节如果起始位为“0”则说明,该字符占有 1 字节。如果起始位为“10”则说明该字节不是字符的其实字节。如果起始为为 n 个“1” 1个“0”,则说明改字符占有 n 个字节。其中1≤n≤6。因此对于 UTF-8 的编码,我们只需要每次计算每个字符开始字节的 1 的个数,就可以确定这个字符的长度。GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);color: rgb(34, 34, 34);border-bottom: 1px solid rgb(238, 238, 238);line-height: 1.75em;box-sizing: border-box !important;overflow-wrap: break-word !important;">2.读取 GBK 系列文本原理
对于 ASCII、GB2312、GBK 到 GB18030 编码方法是向下兼容的 ,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为 0。因此我们只需处理好 GB18130,就可以处理与他兼容的所有编码,对于GB18130 使用双字节变长编码。单字节部分从 0×0~0x7F 与 ASCII 编码兼容。双字节部分,首字节从 0×81~0xFE,尾字节从 0×40~0x7E以及 0×80~0xFE,与 GBK 标准基本兼容。因此只需检测首字节是否小于 0×81 即可确定其为单字节编码还是双字节编码。GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);color: rgb(34, 34, 34);border-bottom: 1px solid rgb(238, 238, 238);line-height: 1.75em;box-sizing: border-box !important;overflow-wrap: break-word !important;">3.C 代码实现
对于一个语言处理系统,读取不同编码的文本应该是最基础的需求,文本的编码方式应该对系统其他调用者透明,只需每次获取一个字符即可,而不需要关注这个文本的编码方式。从而我们定义了抽象类 Text,及其接口ReadOneChar,并使两个文本类 GbkText 和 UtfText 继承这个抽象类,当系统需要读取更多种编码的文件时,只需要定义新的类然后继承该抽象类即可,并不需要更改调用该类的代码。从而获得更好的扩展性。更好的方式是使用简单工厂模式,使不同的文本编码格式对于调用类完全透明,简单工厂模式详解请参看:设计模式:可复用面向对象软件基础。其中 Text 抽象类的定义如下:#ifndef TEXT_H
#define TEXT_H
#include
#include
using namespace std;
class Text
{
protected:
char * m_binaryStr;
size_t m_length;
size_t m_index;
public:
Text(string path);
void SetIndex(size_t index);
virtual bool ReadOneChar(string
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
Meta Quest Pro定于本月25日面市,定价1500美元。零售包装内含头戴装置,Quest Touch Pro手柄,充电底座,压感笔尖(手柄附件),部分遮光罩(另有全遮光罩可选)。开发单位宣称Meta Quest...
关键字:
ST
AN
传感器
GB
今晚RTX 4090显卡解禁了,有关性能测试的部分大家看得差不多了,这一代显卡让很多人有些担忧的是功耗,TGP提升到了450W,比上代提升了100W,而且散热器非常夸张。而且官方建议配备850W电源,部分AIC的非公版显...
关键字:
TI
显卡
电源
GB
佛山2022年9月26日 /美通社/ -- 近日,美的工业城西区项目同时荣获LEED、WELL金级认证。9月16日,美的工业城西区LEED ID+C 金级认证授牌仪式在西区举行,美国绿色建筑委员会(USGBC)北亚区董事...
关键字:
美的
BUILDING
电梯
GB
上海2022年9月26日 /美通社/ -- 近日,SGS与科勒(中国)投资有限公司(以下简称"科勒")在上海成功举办授证仪式。科勒旗下的K-25820T-NA不粘深煎锅荣获SGS独立慧鉴认证。 SG...
关键字:
铝合金
GB
测试仪器
温度
深圳2022年9月8日 /美通社/ -- 9月5-6日,由开放数据中心委员会(ODCC)主办的"2022开放数据中心峰会"于北京国际会议中心隆重召开。作为ODCC白金会员单位,忆联受邀出席本次峰会,一...
关键字:
DC
固态硬盘
读写
GB
30万平方米、3000家参展企业、30万观众 上海2022年8月10日 /美通社/ -- 2022年12月14日-16日,上海博华国际展览有限公司将在深圳国际会展中心举办首届博华深圳联展(Connexion ShenZ...
关键字:
荣耀
TE
GB
供应链
北京2022年6月8日 /美通社/ -- 近日,德国莱茵TUV大中华区(以下简称"TUV莱茵")管理体系服务受邀参与制定的《"零碳工厂评价规范&...
关键字:
GB
ISO
建模
汽车
上海2022年5月25日 /美通社/ -- 近日,国际独立第三方检测、检验和认证机构德国莱茵TUV大中华区(以下简称“TUV莱茵”)携手英国建筑研究院(BRE),为上海建科集...
关键字:
照明系统
PERFORMANCE
能源管理
GB
4项关键性临床试验数据继续为百悦泽®(泽布替尼)治疗B细胞恶性肿瘤提供证据支持 BCL-2抑制剂BGB-11417作为单药治疗和与泽布替尼联合用药的早期数据显示管线的有力前景 中国北京、美国麻省剑桥和瑞士巴塞...
关键字:
管线
神州
BSP
GB
北京2022年4月6日 /美通社/ -- 日前,亚马逊云科技持续增强Serverless计算服务功能,将Amazon Lambda函数可用的临时存储空间提升20倍,从512MB增加至10,240 MB。该功能将帮助客户更...
关键字:
亚马逊
GB
(全球TMT2022年4月6日讯)日前,亚马逊云科技持续增强Serverless计算服务功能,将Amazon Lambda函数可用的临时存储空间提升20倍,从512MB增加至10,240 MB。该功能将帮助客户更轻松地...
关键字:
亚马逊
GB
北京2022年3月25日 /美通社/ -- 近日,政府数字化转型如火如荼推进,各类信息化软硬件工具不断发布。浪潮政务自动化辅助机器人(GBOT)助力一地方政府数字化转型。数字赋能,减时限、减跑腿、减材料,窗口外,办事人办...
关键字:
GB
自动化
机器人
1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备。2、Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为stm32f10x_conf....
关键字:
STM32
电平
FSMC
GB
100多年来,人类从简单的电报通信发展到如今的5G通信,生活发生了翻天覆地的变化,直播、VR/AR、超清视频会议、远程医疗、自动驾驶和智能家居等应用越来越广泛。而所有这些,都需要基于高速的数据传输。因为高速信号在铜缆中迅...
关键字:
光通信
光模块
GB
封装
1.读取UTF-8编码文本原理首先了解UTF-8的编码方式,UTF-8采用可变长编码的方式,一个字符可占1字节-6字节,其中每个字符所占的字节数由字符开始的1的个数确定,具体的编码方式如下:U-00000000–U-00...
关键字:
GB
1.读取UTF-8编码文本原理首先了解UTF-8的编码方式,UTF-8采用可变长编码的方式,一个字符可占1字节-6字节,其中每个字符所占的字节数由字符开始的1的个数确定,具体的编码方式如下:U-00000000–U-00...
关键字:
GB
本篇内容,纯属虚构!如有雷同,纯属巧合!1、为什么10月24日会是程序员节? A:不知道 B:1024MB=1GB约等于一级棒,程序员No.1 C:纯凑热闹点击下方空白区域查看答案▼「答案:B」 对于程序员来说,...
关键字:
GB
本篇内容,纯属虚构!如有雷同,纯属巧合!1、为什么10月24日会是程序员节? A:不知道 B:1024MB=1GB约等于一级棒,程序员No.1 C:纯凑热闹点击下方空白区域查看答案▼「答案:B」 对于程序员来说,...
关键字:
GB
电波暗室,用于模拟开阔场,同时用于辐射无线电骚扰(EMI)和辐射敏感度(EMS)测量的密闭屏蔽室。来源:http://gememc.com/upload/201712/20171201093022763.jpg0.前言最...
关键字:
EMC测试
GB
电波暗室,用于模拟开阔场,同时用于辐射无线电骚扰(EMI)和辐射敏感度(EMS)测量的密闭屏蔽室。来源:http://gememc.com/upload/201712/20171201093022763.jpg0.前言最...
关键字:
EMC测试
GB