字符串解码方法、装置、电子设备及存储介质制造方法及图纸

技术编号:37181065 阅读:16 留言:0更新日期:2023-04-20 22:47
本申请实施例公开了一种字符串解码方法、装置、电子设备及存储介质。该方法包括:在接收到待解码字符串参数的情况下,对待解码字符串参数中的每个字节进行遍历;遍历到任一字节时,读取字节的码值,基于字节的码值判断字节是否为高位中文字节,若确定字节为高位中文字节,将遍历指针偏移第一预设偏移值;若字节并非高位中文字节,判断字节是否为存放分割符的字节,若是,确定字节在待解码字符串参数中的位置,并将遍历指针偏移第二预设偏移值;在遍历到存放预设结束字符的字节的情况下,待解码字符串参数遍历结束,按照确定的预设分割符所在的位置将待解码字符串参数截取为待解码字符单元;基于预设的解码规则对各待解码字符单元进行解码。元进行解码。元进行解码。

【技术实现步骤摘要】
字符串解码方法、装置、电子设备及存储介质


[0001]本申请实施例涉及编解码
,尤其涉及一种字符串解码方法、装置、电子设备及存储介质。

技术介绍

[0002]在数据传输的过程中,数据发送方会将信息编码为字符串,并将各信息的字符串之间设置分割符,以便于数据接收方对接收到的数据进行解码,得到正确的信息。
[0003]如果数据接收方是在C语言的编译环境下,针对字符编码为GBK的中英文字符串进行按分割符的拆解取值时,C语言一般使用strchr函数获取分割符的位置,然后使用strncpy函数进行截取。
[0004]其中,GBK编码的中文字符串通常使用两个字节存储,而英文通常使用一个字节进行存储,而strchr函数却是按照字节进行遍历查找的,若中文字符串中的其中一个字节的码值与某个英文的码值一致时,此时就会输出英文的码值对应的英文,就无法正确解码出相应的中文,产生乱码的情况。

技术实现思路

[0005]本申请实施例提供一种字符串解码方法、装置、电子设备及存储介质,以避免中文字节解码出现乱码的情况。
[0006]第一方面,本申请实施例提供了一种字符串解码方法,所述方法包括:
[0007]在接收到待解码字符串参数的情况下,对所述待解码字符串参数中的每个字节进行遍历;
[0008]遍历到任一字节时,读取所述字节的码值,基于所述字节的码值判断所述字节是否为高位中文字节,若确定所述字节为高位中文字节,将遍历指针偏移第一预设偏移值;
[0009]若所述字节并非高位中文字节,判断所述字节是否为存放分割符的字节,若是,确定所述字节在所述待解码字符串参数中的位置,并将遍历指针偏移第二预设偏移值;
[0010]在遍历到存放预设结束字符的字节的情况下,所述待解码字符串参数遍历结束,按照确定的预设分割符所在的位置将所述待解码字符串参数截取为待解码字符单元;
[0011]基于预设的解码规则对各所述待解码字符单元进行解码。
[0012]第二方面,本申请实施例提供了一种字符串解码装置,所述装置包括:
[0013]遍历模块,用于在接收到待解码字符串参数的情况下,对所述待解码字符串参数中的每个字节进行遍历;
[0014]中文判断模块,用于遍历到任一字节时,读取所述字节的码值,基于所述字节的码值判断所述字节是否为高位中文字节,若确定所述字节为高位中文字节,将遍历指针偏移第一预设偏移值;
[0015]分割符判断模块,用于若所述字节并非高位中文字节,判断所述字节是否为存放分割符的字节,若是,确定所述字节在所述待解码字符串参数中的位置,并将遍历指针偏移
第二预设偏移值;
[0016]字节截取模块,用于在遍历到存放预设结束字符的字节的情况下,所述待解码字符串参数遍历结束,按照确定的预设分割符所在的位置将所述待解码字符串参数截取为待解码字符单元;
[0017]字节解码模块,用于基于预设的解码规则对各所述待解码字符单元进行解码。
[0018]第三方面,本申请实施例还提供了一种电子设备,所述电子设备包括:
[0019]一个或多个处理器;
[0020]存储装置,用于存储一个或多个程序,
[0021]当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本申请任一实施例提供的字符串解码方法。
[0022]第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本申请任一实施例提供的字符串解码方法。
[0023]本申请实施例的技术方案,在接收到待解码字符串参数的情况下,对所述待解码字符串参数中的每个字节进行遍历;遍历到任一字节时,读取所述字节的码值,基于所述字节的码值判断所述字节是否为高位中文字节,若确定所述字节为高位中文字节,将遍历指针偏移第一预设偏移值;若所述字节并非高位中文字节,判断所述字节是否为存放分割符的字节,若是,确定所述字节在所述待解码字符串参数中的位置,并将遍历指针偏移第二预设偏移值;在遍历到存放预设结束字符的字节的情况下,所述待解码字符串参数遍历结束,按照确定的预设分割符所在的位置将所述待解码字符串参数截取为待解码字符单元;基于预设的解码规则对各所述待解码字符单元进行解码。基于此,本实施例遍历到任一字节时,会先判断该字节是否为高位中文字节,若是,则直接将遍历指针偏移预设偏移位,直接跳过该字节的下一字节的遍历,这就避免了低位中文字节被误判定为英文字节的情况,从而使中文的高低位字节的识别更为准确,避免了中文解码乱码的情况出向。
附图说明
[0024]图1为本申请实施例一提供的字符串解码方法的流程示意图;
[0025]图2为本申请实施例二提供的一种字符串解码装置的结构示意图;
[0026]图3为本申请实施例三提供的一种电子设备的结构示意图。
具体实施方式
[0027]下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
[0028]实施例一
[0029]图1为本申请实施例一提供的字符串解码方法的流程示意图,本实施例从第一平台端进行说明,方法可适用于字符串解码的场景。该方法可以由字符串解码装置来执行,该装置可采用硬件和/或软件的方式实现,并一般可以集成在具有数据运算能力的计算机等电子设备中,具体包括如下步骤:
[0030]步骤101、在接收到待解码字符串参数的情况下,对待解码字符串参数中的每个字节进行遍历。
[0031]需要说明的是,本申请的实施例适用于利用GBK中文编码规则进行编码的字符串,GBK中文编码规则中,中文字段对应两个字节,一个高位字节及一个低位字节,高位字节指的是占据中文字段的两个字节中处于高位的一个字节,低位字节则指的是占据中文字段的两个字节中处于低位的一个字节。
[0032]通常,高位字节的范围是81

FE(也就是不含80和FF),低位字节的一部分领域在40

7E,其他领域在80

FE。也就是说,高位字节的码值必然是大于0x80的,由于在对字符串进行解码时,都是从字符串的最高位字节开始遍历,那么对于中文字段,也必然先遍历到其高位字节,因此,可以利用该特性实现高位中文字节的识别,后续会详细说明,此处不再赘述。
[0033]本步骤中,一旦接收到待解码字符串参数,便可以开始对待解码字符串参数中的每个字节进行遍历。在一个具体的例子中,待解码字符串参数在编码之前可以为“石硚~4403131111111111~广州~”,其中,分割符为“~”,编码后,得到的字符串可以为“CAAFB37E0x0044031311111111110x00B9E3D6DD0x00%/”。
[0034]步骤102、遍历到任一字节时,读取字节的码值,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种字符串解码方法,其特征在于,所述方法包括:在接收到待解码字符串参数的情况下,对所述待解码字符串参数中的每个字节进行遍历;遍历到任一字节时,读取所述字节的码值,基于所述字节的码值判断所述字节是否为高位中文字节,若确定所述字节为高位中文字节,将遍历指针偏移第一预设偏移值;若所述字节并非高位中文字节,判断所述字节是否为存放分割符的字节,若是,确定所述字节在所述待解码字符串参数中的位置,并将遍历指针偏移第二预设偏移值;在遍历到存放预设结束字符的字节的情况下,所述待解码字符串参数遍历结束,按照确定的预设分割符所在的位置将所述待解码字符串参数截取为待解码字符单元;基于预设的解码规则对各所述待解码字符单元进行解码。2.根据权利要求1所述的方法,其特征在于,所述基于所述字节的码值判断所述字节是否为高位中文字节,包括:判断所述字节的码值与预设阈值之间的大小,得到判断结果;若所述判断结果为所述字符的码值大于所述预设阈值,确定所述字节为高位中文字节;所述判断结果为所述字符的码值小于等于所述预设阈值,确定所述字节并非高位中文字节。3.根据权利要求2所述的方法,其特征在于,所述解码规则为GBK编码对应的解码规则,所述预设阈值为0x80。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述字节并非存放预设分割符的字节,将所述遍历指针偏移第二预设偏移值。5.一种字符串解码装置,其特征在于,所述装置包括:遍历模块,用于在接收到待解码字符串参数的情况下,对所述待解码字符串参数中的每个字节进行遍历;中文判断模块,用于遍历到任一字节时,读取所述字节的码值,基于所述字节的码值判断所述字节是否为高位中文字节,若确定所述字节为高位中文...

【专利技术属性】
技术研发人员:李启彬
申请(专利权)人:北京思特奇信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1