CN105808370A - 字符串中半个中文字符的发现方法 - Google Patents
字符串中半个中文字符的发现方法 Download PDFInfo
- Publication number
- CN105808370A CN105808370A CN201410852510.1A CN201410852510A CN105808370A CN 105808370 A CN105808370 A CN 105808370A CN 201410852510 A CN201410852510 A CN 201410852510A CN 105808370 A CN105808370 A CN 105808370A
- Authority
- CN
- China
- Prior art keywords
- byte
- chinese character
- coding
- character
- discovery method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种字符串中半个中文字符及尾字节半个中文字符的发现方法,其中字符串中尾字节为半个中文字符的发现方法包括:获取所述字符串中全部字节的编码;从所述字符串中尾字节开始逐字节判断字节的编码是否属于中文字符编码范围;以及当包括所述尾字节的编码属于所述中文字符编码范围的连续个字节的数量为奇数时,判断所述尾字节是半个中文字符。如此,能够避免尾字节为半个中文字符而引起的数据导入错误和导入失败。
Description
技术领域
本发明涉及半个中文字符的发现,具体地,涉及一种字符串中半个中文字符的发现方法。
背景技术
字符串中有时会出现一些半个中文字符的乱码情况,比如错误的字符截取后可能导致字段末尾为半个中文情况。这种字段末尾为半个中文的情况可能导致一些应用出现严重的数据错误。比如在数据库中使用sqlldr工具导入数据的情况中,如果在字段末尾遇到半个中文字符,则会合并末尾分隔符作为一个中文字符,这将导致数据导入的错误和导入失败。而这种情况也并非是操作员所预见及期待的情况。另外,字符串中非结尾遇到的半个中文字符导致的问题情况也是如此。
发明内容
本发明的目的是提供一种字符串中半个中文字符的发现方法及尾字节半个中文字符的发现方法,该尾字节半个中文字符的发现方法能够发现尾字节为半个中文字符的情况,进而能够避免数据导入错误和导入失败。
为了实现上述目的,本发明提供一种字符串中尾字节为半个中文字符的发现方法,所述发现方法包括:获取所述字符串中全部字节的编码;从所述字符串中尾字节开始逐字节判断字节的编码是否属于中文字符编码范围;以及当包括所述尾字节的字节的编码属于所述中文字符编码范围的连续个字节的数量为奇数时,判断所述尾字节是半个中文字符。
优选地,所述发现方法包括:设定计数器并将其计数值初始为零;从所述尾字节开始逐字节判断字节的编码是否属于中文字符编码范围,每判断一个字节的编码属于所述中文字符编码范围,则计数器的计数值加1,直至首次出现字节的编码不属于所述中文字符编码范围为止;以及获取所述计数器的计数值,如果所述计数值为奇数,则判断所述尾字节是半个中文字符。
优选地,所述编码为ASCII码,当所述字符串中的字节的ASCII码的十进制值大于127时,表示该字节的编码属于中文字符的编码。
优选地,在确定所述尾字节为半个中文字符的情况下,将所述尾字节的编码值修改为预设的编码值。
相应地,本发明还提供一种字符串中半个中文字符的发现方法,所述发现方法包括:获取所述字符串中全部字节的编码;从所述字符串中第一个字节开始逐字节判断字节的编码是否属于中文字符编码范围;当属于所述中文字符编码范围的连续个字节的数量为奇数时,判断该连续个字节中的最后一个字节为半个中文字符。
优选地,所述方法包括以下步骤:设定计数器并将其计数值初始为零;从所述字符串中第一个字节开始逐字节判断字节的编码是否属于中文字符编码范围;每判断一个字节的编码属于中文字符编码范围时,计数器的计数值加1,直至首次出现字节的编码不属于所述中文字符编码范围为止;以及获取所述计数器的计数值,如果所述计数器值为奇数,则确定所判断的属于中文字符编码范围的连续字节中的最后一个字节是半个中文字符,并将计数值清零;从已确定为半个中文字符的字节的下一字节开始重复上述判断过程直到遍历所述字符串中的全部字节。
优选地,所述编码为ASCII码,当所述字符串中的字节的ASCII码的十进制值大于127时,表示该字节的编码属于中文字符的编码。
优选地,将确定为半个中文字符的字节的编码值修改为预设的编码值。
优选地,所述预设的编码值为表示逗号或无效中文字符的编码值。
优选地,所述发现方法还包括:在发现半个中文字符的情况下,输出该半个中文字符在所述字符串中的位置;以及在未发现半个中文字符的情况下,输出预定义的结果值。
通过上述技术方案,从字符串中尾字节开始判断字节的编码是否属于中文字符编码范围,当包括所述尾字节的字节的编码属于所述中文字符编码范围的连续个字节的数量为奇数时,判断所述尾字节是半个中文字符。如此,能够避免尾字节为半个中文字符而引起的数据导入错误和导入失败。
本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
图1是本发明提供的字符串中尾字为半个中文字符的发现方法的流程图;
图2是示出了根据本发明实施方式的字符串中尾字节为半个中文字符的发现方法的流程图;
图3给出了将为半个中文字符的尾字节的编码值修改为预设的编码值的流程图;
图4是本发明提供的字符串中半个中文字符的发现方法的流程图;
图5是示出了根据本发明实施方式的字符串中半个中文字符的发现方法的流程图;以及
图6给出了将字符串中为半个中文字符的字节的编码值修改为预设的编码值的流程图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
图1是本发明提供的字符串中尾字为半个中文字符的发现方法的流程图。如图1所示,本发明提供的字符串中尾字为半个中文字符的发现方法可以包括:在步骤60处,获取所述字符串中全部字节的编码;在步骤61处,从所述字符串中尾字节开始逐字节判断字节的编码是否属于中文字符编码范围;以及在步骤62处当包括所述尾字节的字节的编码的属于所述中文字符编码范围的连续个字节的数量为奇数时,判断所述尾字节是半个中文字符。如此,能够发现字符串尾字节为半个中文字符的情况,进而避免数据导入错误和导入失败。
所述发现方法包括:设定计数器并将其计数值初始为零;从所述尾字节开始逐字节判断字节的编码是否属于中文字符编码范围,每判断一个字节的编码属于所述中文字符编码范围,则计数器的计数值加1,直至首次出现字节的编码不属于所述中文字符编码范围为止;以及获取所述计数器的计数值,如果所述计数值为奇数,则判断所述尾字节是半个中文字符。
以下将参考图2通过具体实施方式来描述本发明提供的字符串中尾字为半个中文字符的发现方法,但是本发明并不限制于此。
在该实施方式中,所述编码可以为ASCII码,当所述字符串中的字节的ASCII码的十进制值大于127时,表示该字节的编码属于中文字符的编码。
图2是示出了根据本发明实施方式的字符串中尾字节为半个中文字符的发现方法的流程图。如图2所示,在步骤10处,获取字符串中的字节数N;在步骤11处,取n=N,MD=0;在步骤12处,判断第n个字节的ASCII码的十进制值是否大于127,如果不大于127,则结束并返回MOD(MD,2),如果第n个字节的ASCII码的十进制值大于127,则转至步骤13处,n=n-1,MD=MD+1;在步骤14处,判断第n个字节的ASCII码的十进制值是否大于127,如果不大于127,则结束并返回MOD(MD,2),如果第n个字节的ASCII码的十进制值大于127,则转至步骤15,n=n-1,MD=MD+1;在步骤16处,判断n是否小于等于1,如果是,则结束并返回MOD(MD,2),如果为否,则转至步骤12。当MOD(MD,2)不为0时,表示尾字节是半个中文字符,当MOD(MD,2)为0时,表示尾字节不是半个中文字符。
另外,在确定所述尾字节为半个中文字符的情况下,可以将所述尾字节的编码值修改为预设的编码值。
图3给出了将为半个中文字符的尾字节的编码值修改为预设的编码值的流程图。如图3所示,在步骤20处,获取字符串中的字节数N;在步骤21处,取n=N,MD=0;在步骤22处,判断第n个字节的ASCII码的十进制值是否大于127,如果不大于127,则转至步骤27,如果第n个字节的ASCII码的十进制值大于127,则转至步骤23处,n=n-1,MD=MD+1;在步骤24处,判断第n个字节的ASCII码的十进制值是否大于127,如果不大于127,则转至步骤27,如果第n个字节的ASCII码的十进制值大于127,则转至步骤25,n=n-1,MD=MD+1;在步骤26处,判断n是否小于等于1,如果是,则转至步骤27,如果为否,则转至步骤22。在步骤27处,判断MOD(MD,2)是否为0,如果为0,则结束,如果不为0,则将尾字节的编码值修改为预设的编码值。其中,预设的编码值可以为表示逗号、其他符号或无效中文字符的编码值。
另外,本发明还提供一种字符串中半个中文字符的发现方法,图4是本发明提供的字符串中半个中文字符的发现方法的流程图。如图4所示,所述发现方法包括:在步骤70处,获取所述字符串中全部字节的编码;在步骤71处,从所述字符串中第一个字节开始逐字节判断字节的编码是否属于中文字符编码范围;在步骤72处,当属于所述中文字符编码范围的连续个字节的数量为奇数时,判断该连续个字节中的最后一个字节为半个中文字符。
所提供的字符串中半个中文字符的发现方法包括:设定计数器并将其计数值初始为零;从所述字符串中第一个字节开始逐字节判断字节的编码是否属于中文字符编码范围;每判断一个字节的编码属于中文字符编码范围时,计数器的计数值加1,直至首次出现字节的编码不属于所述中文字符编码范围为止;以及获取所述计数器的计数值,如果所述计数器值为奇数,则确定所判断的属于中文字符编码范围的连续字节中的最后一个字节是半个中文字符,并将计数值清零;从已确定为半个中文字符的字节的下一字节开始重复上述判断过程直到遍历所述字符串中的全部字节。
以下将参考图5通过具体实施方式来描述本发明提供的字符串中半个中文字符的发现方法,但是本发明并不限制于此。
图5是示出了根据本发明实施方式的字符串中半个中文字符的发现方法的流程图。如图5所示,在步骤30处,获取字符串中字节的数量N;在步骤31处,取n=1;在步骤32处,判断n是否大于N,如果n大于N,则结束并返回0(当然还可以将返回设置为任何预定义的结果值),如果n不大于N,则在步骤33处,判断第n个字节的ASCII码的十进制值是否大于127,如果不大于127,则转至步骤36,如果第n个字节的ASCII码的十进制值大于127,则在步骤34处,判断第n+1个字节的ASCII码的十进制值是否大于127,如果不大于127,则返回n值并结束,如果第n+1个字节的ASCII码的十进制值大于127,则在步骤35处,取n=n+1;然后在步骤36处,取n=n+1;在步骤37处,判断n是否等于N,如果n不等于N,则转至步骤32,如果n=N,则在步骤38处,判断第n个字节的ASCII码的十进制值是否大于127;如果大于127,则返回n的值并结束,如果第n个字节的ASCII码的十进制值是不大于127,则结束并返回0。
另外,在确定所述字符串中存在半个中文字符的情况下,可以将为半个中文字符的字节的编码值修改为预设的编码值。
图6给出了将字符串中为半个中文字符的字节的编码值修改为预设的编码值的流程图。如图6所示,在步骤40处,获取字符串中字节的数量N;在步骤41处,取n=1;在步骤42处,判断n是否大于N,如果n大于N,则结束,如果n不大于N,则在步骤43处,判断第n个字节的ASCII码的十进制值是否大于127,如果不大于127,则转至步骤46,如果第n个字节的ASCII码的十进制值大于127,则在步骤44处,判断第n+1个字节的ASCII码的十进制值是否大于127,如果不大于127,则转至步骤49处,将第n个字节的编码值修改为预设的编码值;然后在步骤50处,取n=n+1;转至步骤46处,取n=n+1;如果在步骤44处第n+1个字节的ASCII码的十进制值大于127,则在步骤45处,取n=n+1;然后在步骤46处,取n=n+1;之后在步骤47处,判断n是否等于N,如果n不等于N,则转至步骤42,如果n=N,则在步骤48处,判断第n个字节的ASCII码的十进制值是否大于127;如果大于127,则转至步骤49处,如果第n个字节的ASCII码的十进制值是不大于127,则结束。在实施方式中,预设的编码值可以为表示逗号、其他符号或无效中文字符的编码值。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
Claims (10)
1.一种字符串中尾字节为半个中文字符的发现方法,其特征在于,所述发现方法包括:
获取所述字符串中全部字节的编码;
从所述字符串中尾字节开始逐字节判断字节的编码是否属于中文字符编码范围;以及
当包括所述尾字节的字节的编码属于所述中文字符编码范围的连续个字节的数量为奇数时,判断所述尾字节是半个中文字符。
2.根据权利要求1所述的发现方法,其特征在于,所述发现方法包括:
设定计数器并将其计数值初始为零;
从所述尾字节开始逐字节判断字节的编码是否属于中文字符编码范围,每判断一个字节的编码属于所述中文字符编码范围,则计数器的计数值加1,直至首次出现字节的编码不属于所述中文字符编码范围为止;以及
获取所述计数器的计数值,如果所述计数值为奇数,则判断所述尾字节是半个中文字符。
3.根据权利要求1所述的发现方法,其特征在于,所述编码为ASCII码,当所述字符串中的字节的ASCII码的十进制值大于127时,表示该字节的编码属于中文字符的编码。
4.根据权利要求1至3所述的发现方法,其特征在于,在确定所述尾字节为半个中文字符的情况下,将所述尾字节的编码值修改为预设的编码值。
5.一种字符串中半个中文字符的发现方法,其特征在于,所述发现方法包括:
获取所述字符串中全部字节的编码;
从所述字符串中第一个字节开始逐字节判断字节的编码是否属于中文字符编码范围;
当属于所述中文字符编码范围的连续个字节的数量为奇数时,判断该连续个字节中的最后一个字节为半个中文字符。
6.根据权利要求5所述的发现方法,其特征在于,所述方法包括以下:
设定计数器并将其计数值初始为零;
从所述字符串中第一个字节开始逐字节判断字节的编码是否属于中文字符编码范围;
每判断一个字节的编码属于中文字符编码范围时,计数器的计数值加1,直至首次出现字节的编码不属于所述中文字符编码范围为止;以及
获取所述计数器的计数值,如果所述计数器值为奇数,则确定所判断的属于中文字符编码范围的连续字节中的最后一个字节是半个中文字符,并将计数值清零;
从已确定为半个中文字符的字节的下一字节开始重复上述判断过程直到遍历所述字符串中的全部字节。
7.根据权利要求5中所述的发现方法,其特征在于,将确定为半个中文字符的字节的编码值修改为预设的编码值。
8.根据权利要求7所述的发现方法,其特征在于,所述预设的编码值为表示逗号或无效中文字符的编码值。
9.根据权利要求5中所述的发现方法,其特征在于,所述发现方法还包括:
在发现半个中文字符的情况下,输出该半个中文字符在所述字符串中的位置;以及
在未发现半个中文字符的情况下,输出预定义的结果值。
10.根据权利要求5-9中任一项权利要求所述的发现方法,其特征在于,所述编码为ASCII码,当所述字符串中的字节的ASCII码的十进制值大于127时,表示该字节的编码属于中文字符的编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410852510.1A CN105808370A (zh) | 2014-12-31 | 2014-12-31 | 字符串中半个中文字符的发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410852510.1A CN105808370A (zh) | 2014-12-31 | 2014-12-31 | 字符串中半个中文字符的发现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105808370A true CN105808370A (zh) | 2016-07-27 |
Family
ID=56420863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410852510.1A Pending CN105808370A (zh) | 2014-12-31 | 2014-12-31 | 字符串中半个中文字符的发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105808370A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110932822A (zh) * | 2019-12-02 | 2020-03-27 | 泰康保险集团股份有限公司 | 数据编码方法、数据解码方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5543639A (en) * | 1978-09-22 | 1980-03-27 | Nec Corp | Chinese character display system for cathoderay tube character display unit |
CN1294347A (zh) * | 1999-10-21 | 2001-05-09 | 神达电脑股份有限公司 | 键盘输入系统异常的检错方法 |
CN101201790A (zh) * | 2006-12-15 | 2008-06-18 | 中兴通讯股份有限公司 | 检测项定位方法 |
CN102479174A (zh) * | 2010-11-23 | 2012-05-30 | 盛乐信息技术(上海)有限公司 | 针对gbk编码的汉字自动校验和纠错系统及其方法 |
-
2014
- 2014-12-31 CN CN201410852510.1A patent/CN105808370A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5543639A (en) * | 1978-09-22 | 1980-03-27 | Nec Corp | Chinese character display system for cathoderay tube character display unit |
CN1294347A (zh) * | 1999-10-21 | 2001-05-09 | 神达电脑股份有限公司 | 键盘输入系统异常的检错方法 |
CN101201790A (zh) * | 2006-12-15 | 2008-06-18 | 中兴通讯股份有限公司 | 检测项定位方法 |
CN102479174A (zh) * | 2010-11-23 | 2012-05-30 | 盛乐信息技术(上海)有限公司 | 针对gbk编码的汉字自动校验和纠错系统及其方法 |
Non-Patent Citations (1)
Title |
---|
互联网: "《CSDN-专业IT技术社区 http://blog.csdn.net/ligaofeng/article/details/1606294》", 12 May 2007 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110932822A (zh) * | 2019-12-02 | 2020-03-27 | 泰康保险集团股份有限公司 | 数据编码方法、数据解码方法、装置、设备及存储介质 |
CN110932822B (zh) * | 2019-12-02 | 2022-06-17 | 泰康保险集团股份有限公司 | 数据编码方法、数据解码方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10547324B2 (en) | Data compression coding method, apparatus therefor, and program therefor | |
JP2010519806A5 (zh) | ||
WO2002091586A3 (en) | 8b/10b encoding and decoding for high speed applications | |
EP3598677A3 (en) | Enhanced polar code constructions by strategic placement of crc bits | |
EP2584707A3 (en) | Method and apparatus for channel encoding in a communication system using punctured LDPC codes | |
US20110219357A1 (en) | Compressing source code written in a scripting language | |
EP2195955A1 (en) | Signal segmentation method and crc attachment method for reducing undetected error | |
CA2546148A1 (en) | Method, system and computer program for polynomial based hashing and message authentication coding with separate generation of spectrums | |
KR20090042233A (ko) | 데이터 압축 | |
Bryan et al. | Javascript object notation (json) pointer | |
CN104426629A (zh) | 一种物理层编解码方法及其装置 | |
EP1063585A3 (en) | Operation code encoding | |
WO2006018716A3 (en) | Dsl data collection system | |
JP2013541295A5 (zh) | ||
JP6770506B2 (ja) | 適応率圧縮ハッシュ処理デバイス | |
WO2017194401A3 (en) | Method and device for context-adaptive binary arithmetic coding a sequence of binary symbols representing a syntax element related to video data | |
CN105391514B (zh) | 字符编码解码方法及装置 | |
CN104038233A (zh) | 基于相邻位异或运算的测试数据压缩与解压缩方法 | |
WO2002054603A3 (en) | Method and system for allocating convolutional encoded bits into symbols before modulation | |
TW200627401A (en) | Error detecting code addition circuit, error detection circuit and method, and disc apparatus | |
RU2010109431A (ru) | Способ передачи данных | |
CN104065460B (zh) | 基于二叉树的编码方法和编码装置 | |
CN105808370A (zh) | 字符串中半个中文字符的发现方法 | |
US20060202874A1 (en) | System and method for decoding a variable-length codeword while updating the variable-length codeword | |
KR20110121597A (ko) | 매체 접근 제어 프로토콜 데이터 유닛에 제어정보를 인코딩 및 디코딩하는 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160727 |