转换装置和转换方法与流程

文档序号:16447688发布日期:2019-01-02 21:30阅读:169来源:国知局

本文中讨论的实施方式涉及转换装置和转换方法。



背景技术:

当对压缩数据执行字符代码转换时,通常将该转换执行两遍。第一遍是扩展处理,并且第二遍是字符代码转换处理(例如,参考日本公开特许专利公报第2003-30030号)。该处理需要存储区域,其被准备以在其中存储扩展处理的结果。

应用LZ77的ZIP被广泛用作压缩算法和扩展算法。在ZIP中,滑动窗口用于确定要被压缩的字符串的最长匹配字符串,以生成压缩数据。滑动窗口还用于确定要被扩展的压缩数据的最长匹配字符串,以生成扩展数据。通过使用以字节为单位的滑动窗口来确定最长匹配字符串。

存在通过以下方法来生成压缩数据的已知技术:通过使用静态字典将要被压缩的字符串转换成被分配给静态字典中的日语单词或者汉语、日语或韩语(CJK)字符的压缩代码。

专利文献1:日本公开特许专利公报第2003-30030号。

然而,当对通过扩展压缩数据而获得的数据执行字符代码转换时,从压缩数据的扩展处理输出的数据的单位不同于要执行字符代码转换处理的数据的单位。为了解决该问题,作为单独的处理,首先通过扩展处理来开发全部的压缩数据,并且然后对所开发的数据执行字符代码转换处理。因此,作为示例,存在浪费地使用存储区域的问题。作为另一示例,存在该处理花费太多时间的问题。

例如,在特定字符代码系统中,日语单词或者作为汉语、韩语和日语的字符的CJK字符被登记在传统技术中所使用的静态字典中。将登记在静态字典中的日语单词和CJK字符转换成被分配给其的压缩代码,以执行压缩处理。在这种情况下,如图1所示,在扩展处理中使用与静态字典相对应的扩展树来扩展全部的压缩数据,并且将完全地扩展的扩展数据存储在存储区域中。在字符代码转换处理中,对存储在存储区域中的全部扩展数据的字符代码进行转换,以生成经转换的数据。因此,在扩展处理中,将全部压缩数据的扩展结果存储在存储区域中。因此,浪费地使用了存储区域。此外,扩展处理和字符代码转换处理的处理花费了太多时间。

在一个方面中,目的是防止浪费地使用用于扩展处理和字符代码转换处理的存储区域。在另一方面中,目的是减少扩展处理和字符代码转换处理的处理时间。



技术实现要素:

根据实施方式的一个方面,非暂态计算机可读记录介质在其中存储计算机程序。计算机程序使计算机执行处理。该处理包括输入压缩文件,在该压缩文件中,以包括单个字符或多个字符的字符串为单位对具有第一字符代码的字符串数据进行压缩。该处理包括将压缩文件中包括的压缩信息转换成经转换的压缩信息,所述压缩信息将所述压缩文件中的经压缩的字符串数据中的每一个映射至具有所述第一字符代码的字符串的相应单位中的每一个,从而所述经转换的压缩信息将所述压缩文件中的经压缩的字符串数据中的每一个映射至具有第二字符代码的字符串的相应单位中的每一个。该处理包括根据所述经压缩的字符串数据中的每一个以及所述经转换的压缩信息来生成经转换的压缩文件。

附图说明

图1是扩展处理的示例;

图2是示出了根据本实施方式由信息处理设备执行的压缩处理的示例性流程的图;

图3是动态字典单元的示例;

图4是压缩文件F2的框图的示例;

图5A是示出了根据本实施方式由信息处理设备执行的扩展处理的示例性流程的图(1);

图5B是示出了根据本实施方式由信息处理设备执行的扩展处理的另一示例性流程的图(2);

图6是示出了根据本实施方式的信息处理设备的配置的功能框图;

图7是根据本实施方式的字符代码表的数据结构的示例;

图8A是示出了压缩树的数据结构的示例的图(1);

图8B是示出了压缩树的数据结构的另一示例的图(2);

图9是示出了扩展树的数据结构的示例的图;

图10是示出了根据本实施方式的压缩单元的配置的示例的功能框图;

图11是示出了根据本实施方式的扩展单元的配置的示例的功能框图;

图12是示出了根据本实施方式由压缩单元执行的处理过程的流程图;

图13是示出了根据本实施方式由扩展单元执行的处理过程的流程图;

图14是计算机中的硬件的配置示例;

图15是要在计算机中被操作的计算机程序的配置示例;以及

图16是根据实施方式的系统中的装置的配置示例。

具体实施方式

将参考附图详细说明本发明中公开的计算机程序的优选实施方式。计算机程序例如包括压缩程序和扩展程序。然而,应当理解的是,本发明不限于所公开的实施方式。

图2是示出了根据本实施方式由信息处理设备执行的压缩处理的示例性流程的图。信息处理设备在存储器中提供存储区域A1、存储区域A2、存储区域A3和存储区域A4作为用于压缩处理的工作区域。在下面的示例中,存储区域A1、存储区域A2和存储区域A3分别被称为编码单元、参考单元和动态字典单元。

信息处理设备读出要被压缩的文件F1,并且如果要被压缩的文件F1中的文本是英文,则从文件F1中的文本中提取为从第一字符至终结符的部分的字符串作为英语单词。如果要被压缩的文件F1中的文本是CJK字符或日语单词,则信息处理设备从要被压缩的文件F1中的文本中以字符为单位从第一字符进行提取,以作为CJK字符或日语单词。例如,文件F1包括为特定字符代码系统的“……東……今日……KataokaΔ”的数据。存在单词如“東”、“今日”和“KataokaΔ”。“東”是CJK字符的示例,而“今日”是日语单词的示例,并且用取决于字符代码系统而不同的字符代码串来表示它们中的每一个。“Kataoka”是英文人名的示例,并且以不取决于字符代码系统而不同的字符代码串来表示。终结符是诸如空格()、逗号(,)和句号(。)的符号。在本实施方式中,作为示例,用“Δ”表示终结符。在本实施方式中,作为示例,假定文件F1中的文本的字符代码系统是8位统一码转换格式(UTF-8)。

信息处理设备将字符代码串与位滤波器C1进行比较,并且确定字符代码串是否命中位滤波器C1。位滤波器是用于指定单词的字符代码串的滤波器,其中,单词要通过使用静态字典而被压缩。如果字符代码串命中位滤波器C1,则信息处理设备基于静态字典将字符代码串转换成与单词的字符代码串相对应的压缩代码,并且输出压缩数据。另一方面,如果字符代码串没有命中位滤波器C1的静态字典,则信息处理设备将字符代码串转换成与登记在动态字典中的单词的字符代码串相对应的压缩代码,并且输出压缩数据。

静态字典是以下字典:基于通用英语字典、日语字典、教科书等来指定出现在文档中的单词或字符的出现频率,并且将较短的压缩代码分配给更频繁出现的单词或字符。在静态字典中,将压缩代码分配给日语单词的单位或者分配给CJK字符的单位。

在动态字典中,没有命中位滤波器C1的字符代码串被存储在滑动窗口编码单元中,并且与累积在参考单元中的字符代码串进行核对。将匹配的字符代码串登记在动态字典中,并且给压缩代码分配登记号。下面将详细描述动态字典。

现在将描述由信息处理设备执行的要被压缩的文件F1中的CJK字符“東”的压缩数据的生成处理。假定CJK字符的字符代码串命中位滤波器C1。

信息处理设备将CJK字符“東”与位滤波器C1进行比较,并且确定CJK字符“東”是否命中位滤波器C1。由于CJK字符“東”命中位滤波器C1,所以信息处理设备将CJK字符“東”编码为静态字典中登记的压缩代码。然后,信息处理设备生成包括标识符“0”和CJK字符“東”的压缩代码的压缩数据d1。标识符“0”是表示基于静态字典对字符代码串进行编码的信息。然后,信息处理设备将压缩数据d1写入存储区域A4中。

接下来,现在将描述由信息处理设备执行的要被压缩的文件F1中的日语单词“今日”的压缩数据的生成过程。假定日语单词的字符代码串命中位滤波器C1。

信息处理设备将日语单词“今日”与位滤波器C1进行比较,并且确定日语单词“今日”是否命中位滤波器C1。由于日语单词“今日”命中位滤波器C1,所以信息处理设备将日语单词“今日”编码为静态字典中登记的压缩代码。然后,信息处理设备生成包括标识符“0”和日语单词“今日”的压缩代码的压缩数据d3。标识符“0”是表示基于静态字典对字符代码串进行编码的信息。然后,信息处理设备将压缩数据d3写入存储区域A4中。

接下来,现在将描述由信息处理设备执行的要被压缩的文件F1中的英文字符串“KataokaΔ”的压缩数据的生成过程。假定字符串“KataokaΔ”没有命中位滤波器C1。

信息处理设备将字符串“KataokaΔ”与位滤波器C1进行比较,并且确定字符串“KataokaΔ”是否命中位滤波器C1。由于字符串“KataokaΔ”没有命中位滤波器C1,所以信息处理设备执行下面的处理。

信息处理设备将字符串“KataokaΔ”存储在存储区域A1中,并且通过将存储在存储区域A2中的字符串与存储区域A1中的字符串进行比较来搜索最长匹配字符串。最长匹配字符串是与存储在存储区域A1中的字符串和存储在存储区域A2中的字符串中最长的字符串匹配的字符串。例如,如果字符串“……KataokaΔ……”已被存储在存储区域A2中,则最长匹配字符串将是“KataokaΔ”。信息处理设备在存储区域A2中搜索“K”,并且然后顺序地检查“a”、“t”、“a”、“o”、“k”、“a”和“Δ”是否从通过搜索而获得的存储区域A2中的“K”的位置连续。

如果最长匹配字符串等于或多于预定长度Lmin,则信息处理设备将最长匹配字符串“KataokaΔ”登记在动态字典单元的存储区域A3中。然后,信息处理设备基于动态字典单元的登记内容来生成压缩代码。换言之,信息处理设备将动态字典单元中登记的最长匹配字符串的登记号指定为字符串“KataokaΔ”的压缩代码。然后,信息处理设备生成包括标识符“1”和字符串“KataokaΔ”的压缩代码的压缩数据d2。标识符“1”是表示基于动态字典对字符串进行编码的信息。然后,信息处理设备将压缩数据d2写入存储区域A4中。信息处理设备还通过将存储在存储区域A1中的字符串添加至存储区域A2中来更新存储区域A2。

存储区域A2是其大小被限定的数据区域。例如,存储区域A2是具有64千字节的固定长度的存储区域。信息处理设备将新数据存储于在存储区域A2的顶部处存储的旧数据的顶部,以存储等于或多于存储区域A2所限定的数据大小的数据。由从写入位置的相对地址来表示存储在存储区域A2中的数据的顶部位置,其中,根据数据的存储来更新所述写入位置。

存储区域A3是其数据大小根据输入文件的大小被限定的存储区域。例如,存储区域A3是具有64千字节的固定长度的存储区域。例如,信息处理设备防止存储新数据,以存储等于或多于存储区域A3所限定的数据大小的数据。

图3是动态字典单元的示例。图3所示的动态字典单元包括存储区域A3和参考表T1。参考表T1在其中以相关联的方式保存登记号、存储位置和数据长度。在图3所示的示例中,以二进制表示登记号、存储位置和数据长度。登记号是表示登记在存储区域A3中的最长匹配字符代码串的登记顺序的信息。在本实施方式中,第一登记数据的登记号是“00000000”。存储位置是表示存储在存储区域A3中的最长匹配字符串的第一字符的位置(字节)的信息。数据长度是表示最长匹配字符串的长度的信息。

例如,如果最长匹配字符串“KataokaΔ”是存储区域A3中第七个登记的最长匹配字符串,则信息处理设备在参考表T1的登记号下登记“00000111”作为与最长匹配字符串“KataokaΔ”相对应的登记号。由于最长匹配字符串“KataokaΔ”的第一字符“K”被存储在存储区域A3中的“30”下,所以信息处理设备在该存储位置下登记“000000001110”。由于最长匹配字符串“KataokaΔ”的数据长度是“8”,所以信息处理设备在该数据长度下登记“1000”。

如图3所示,如果最长匹配字符串“KataokaΔ”被登记在动态字典单元中,则最长匹配字符串“KataokaΔ”的登记号是“00000111”。在这种情况下,信息处理设备将“00000111”分配为字符串“KataokaΔ”的压缩代码,并且信息处理设备生成包括登记号“00000111”和标识符“1”的压缩数据d2作为字符串“KataokaΔ”的压缩数据d2。

图4是压缩文件F2的框图的示例。如图4所示,压缩文件F2包括报头单元、压缩数据和报尾单元。报头单元例如包括识别用于生成压缩文件F2的压缩算法的信息以及例如用于压缩的参数的信息。压缩数据与由信息处理设备生成的每个压缩数据相对应。报尾单元包括压缩处理完成之后动态字典单元中的信息。动态字典单元中的信息与图3所示的动态字典单元中的信息相对应。

图5A和图5B为示出了根据本实施方式由信息处理设备执行的扩展处理的示例性流程的图。图5A示出了通过压缩CJK字符而获得的压缩数据的扩展处理的流程以及通过压缩英文字符串而获得的压缩数据的扩展处理的流程。图5B示出了通过压缩日语单词而获得的压缩数据的扩展处理的流程。信息处理设备在存储器中提供存储区域B1、存储区域B2和存储区域B3作为用于扩展处理的工作区域。信息处理设备将压缩文件F2加载在存储区域B1中,并且顺序地读出压缩数据。信息处理设备基于所读出的压缩数据来生成扩展数据。在根据本实施方式的扩展处理中,压缩数据的扩展结果是当字符代码被转换时的状态下的扩展结果。在图5A和图5B中,扩展数据处于当字符代码从UTF-8被转换成UTF-16时的状态。

信息处理设备根据包括在压缩数据中的标识符来执行扩展处理。信息处理设备将所生成的扩展数据存储在存储区域B3中,并且基于存储在存储区域B3中的扩展数据来生成扩展文件F3。信息处理设备还将存储在图4所示的报尾单元中的动态字典单元中的信息加载在存储区域B2中。在下面的说明中,存储区域B1被适当地称为编码单元,并且存储区域B2被称为动态字典单元。扩展文件F3是经转换的压缩文件的示例。

在图5A中,对图2所示的压缩数据d1和压缩数据d2执行扩展处理。

信息处理设备读出压缩数据d1,并且确定压缩数据d1的标识符。如果压缩数据d1的标识符是“0”,则信息处理设备确定静态字典对压缩数据d1进行了编码。信息处理设备将压缩数据d1与扩展树进行比较,并且指定由扩展树表示的扩展数据的指针。然后,信息处理设备基于所指定的扩展数据的指针来指定其字符代码被转换的扩展数据。换言之,信息处理设备指定其字符代码从UTF-8被转换成UTF-16的扩展数据。

例如,信息处理设备用UTF-16字符代码表替换与扩展数据的指针相对应的UTF-8字符代码表。此处,字符代码表是表示与CJK字符相关的字符代码串的表,并且存在用于每个字符代码系统的字符代码表。在用于每个字符代码系统的字符代码表中,以预先确定的CJK字符的顺序来设置字符代码串。信息处理设备基于替换的UTF-16字符代码表以及扩展数据的指针来指定UTF-16中的扩展数据。作为示例,假定来自扩展树的扩展数据的指针指向UTF-8字符代码表中的“E69DB1”。该“E69DB1”是CJK字符“東”的UTF-8字符代码串。由于来自扩展树的扩展数据的指针指向UTF-16字符代码表中的“6771”处,所以在字符代码表被替换之后,指定与扩展数据的指针相关的UTF-16中的扩展数据。换言之,指定从UTF-8被转换成UTF-16的字符代码串“6771”。

然后,信息处理设备将其字符代码被转换的扩展数据写入存储区域B3中。

信息处理设备读出压缩数据d2,并且确定压缩数据d2的标识符。如果压缩数据d2的标识符是“1”,则信息处理设备确定动态字典对压缩数据d2进行了编码。然后,信息处理设备通过参考动态字典,基于压缩数据d2中的压缩代码来生成扩展数据。然后,信息处理设备指定其字符代码被转换的扩展数据。在包括美国信息交换标准代码(ASCII)的任意字符代码系统中,英文字符具有相同的字符代码串。因此,即使将所生成的扩展数据的字符代码从UTF-8转换成UTF-16,字符代码串仍保持相同。

例如,信息处理设备将包括在压缩数据d2中的登记号与动态字典单元中的参考表T1进行比较,并且指定存储区域B2中的存储位置和数据长度。信息处理设备从存储区域B2读出与存储位置和数据长度相对应的数据,并且将所读出的数据分配为扩展数据。例如,由于压缩数据d2中的登记号表示动态字典单元中的“KataokaΔ”,所以生成“KataokaΔ”作为扩展数据。

然后,信息处理设备将其字符代码被转换的扩展数据写入存储区域B3中。

在图5B中,对图2所示的压缩数据d3执行扩展处理。

信息处理设备读出压缩数据d3,并且确定压缩数据d3的标识符。如果压缩数据d3的标识符是“0”,则信息处理设备确定静态字典对压缩数据d3进行了编码。然后,信息处理设备将压缩数据d3与扩展树进行比较,并且指定由扩展树表示的扩展数据的指针。然后,信息处理设备基于所指定的扩展数据的指针来指定其字符代码被转换的扩展数据。换言之,信息处理设备指定其字符代码从UTF-8被转换成UTF-16的扩展数据。

例如,信息处理设备用UTF-16字符代码表替换与扩展数据的指针相对应的UTF-8字符代码表。此处,字符代码表是表示与日语单词相对应的字符代码串的表,并且存在用于每个字符代码系统的字符代码表。在用于每个字符代码系统的字符代码表中,以预先确定的日语单词的顺序来设置字符代码串。信息处理设备基于替换的UTF-16字符代码表以及扩展数据的指针来指定UTF-16中的扩展数据。作为示例,假定来自扩展树的扩展数据的指针指向UTF-8字符代码表中的“e4bb8ae2bd87”处。该“e4bb8ae2bd87”是日语单词“今日”的UTF-8字符代码串。由于来自扩展树的扩展数据的指针指向UTF-16字符代码表中的“4eca65e5”处,所以在字符代码表被替换之后,指定与扩展数据的指针相关的UTF-16中的扩展数据。换言之,指定从UTF-8被转换成UTF-16的字符代码串“4eca65e5”。

然后,信息处理设备将其字符代码被转换的扩展数据写入存储区域B3中。下面将描述字符代码表的细节。

图6是示出了根据本实施方式的信息处理设备的配置的功能框图。如图6所示,信息处理设备100包括压缩单元100a、扩展单元100b和存储单元100c。

压缩单元100a是执行图2所示的压缩处理的处理单元。扩展单元100b是执行图5A和5B所示的扩展处理的处理单元。存储单元100c在其中存储字符代码表200。当压缩数据的标识符为“0”时,字符代码表200为用于扩展压缩数据的表,并且被包括在每个字符代码系统中。字符代码表200包括CJK字符的扩展字符代码串以及日语单词的扩展字符代码串。

现在将参考图7描述字符代码表200的数据结构。图7是根据本实施方式的字符代码表的数据结构的示例。图7示出了当字符代码系统为UTF-8和UTF-16时的字符代码表200。如图7所示,字符代码表200在其中存储扩展字符代码串200a以及长度200b。扩展字符代码串200a是扩展后的字符代码串,并且与字符代码系统中表示的CJK字符或日语单词的字符代码串相对应。长度200b表示扩展字符代码串200a的长度。如果CJK字符或日语单词相同,则不同字符代码系统的扩展字符代码串200a被存储在相同位置处。换言之,如果压缩数据的标识符是“0”,则信息处理设备将压缩数据d1与扩展树进行比较,并且指定由扩展树表示的扩展数据的指针。扩展数据的该指针指向每个字符代码系统中的相同位置。

作为示例,图7中的左图示出了当字符代码系统为UTF-8时的字符代码表200。图7中的右图示出了当字符代码系统为UTF-16时的字符代码表200。如果字符代码系统是UTF-8,则“E69DB1”被存储为扩展字符代码串200a,并且“3”被存储为长度200b。该“E69DB1”是UTF-8中的CJK字符“東”的字符代码串。如果字符代码系统是UTF-16,则“6771”被存储为扩展字符代码串200a,并且“2”被存储为长度200b。该“6771”是UTF-16中的CJK字符“東”的字符代码串。在UTF-8和UTF-16两者中,CJK字符“東”的扩展字符代码串200a被存储在相同位置处。类似地,在UTF-8和UTF-16两者中,CJK字符“神”的扩展字符代码串200a也被存储在相同位置处。

返回图6,信息处理设备100在存储单元100c中设置图2、图5A和图5B所示的存储区域A1、A2、A3、A4、B1、B2和B3。存储单元100c还在其中存储压缩树和扩展树。

图8A和图8B是示出了压缩树的数据结构的示例的图。图8A示出了与CJK字符相对应的压缩树的数据结构。图8B示出了与日语单词相对应的压缩树的数据结构。存在用于每个字符代码系统的一个压缩树。

作为示例,图8A示出了当字符代码系统为UTF-8时的压缩树。如图8A所示,压缩树50包括2元语法、位图、指针、CJK字符、字符代码串长度、出现频率、压缩代码和公共字符代码串。在这些中,2元语法、位图、指针、CJK字符和字符代码串长度与位滤波器C1相对应。CJK字符、字符代码串长度、出现频率、压缩代码和公共字符代码串与静态字典C2相对应。

2元语法是表示两个字符的字符代码串的信息。位图表示与2元语法字符代码串相对应的位图。例如,与“00h00h”相对应的位图是“0_0_0_0_0”。指针是表示与位图相对应的CJK字符的位置的指针。

CJK字符是登记在静态字典C2中的CJK字符,并且以字符代码串来表示CJK字符。此处,字符代码串在括号中表示。字符代码串长度是与CJK字符相对应的字符代码串的长度。出现频率是CJK字符出现的频率。压缩代码是被分配给CJK字符的压缩代码。公共字符代码串是被分配给CJK字符的内部字符代码串,并且是即使字符代码系统不同仍通用的字符代码串。

图8B示出了当字符代码系统为UTF-8时的压缩树。如图8B所示,压缩树50包括2元语法、位图、指针、单词、字符代码串长度、出现频率和压缩代码。其中,2元语法、位图、指针、单词和字符代码串长度与位滤波器C1相对应。单词、字符代码串长度、出现频率和压缩代码与静态字典C2相对应。

2元语法是表示两个字符的字符代码串的信息。位图表示与2元语法字符代码串相对应的位图。例如,与“00h00h”相对应的位图是“0_0_0_0_0”。指针是表示与位图相对应的单词的位置的指针。

单词是登记在静态字典C2中的单词,并且以字符代码串来表示。此处,字符代码串在括号中表示。字符代码串长度是与单词相对应的字符代码串的长度。出现频率是单词出现的频率。压缩代码是被分配给单词的压缩代码。

图9是示出了扩展树的数据结构的示例的图。如图9所示,扩展树60包括多个分支60-1至60-n以及叶子61-1至61-m。向分支60-1至分支60-n中的每一个分配预定的位串。信息处理设备100将压缩数据的位串与被分配给分支60-1至60-n的位串进行比较,并且指定与命中压缩数据的位串的分支相连接的叶子。将信息(如与压缩数据相对应的字符)存储在叶子中。

例如,叶子的数据结构如61所示。例如,叶子在其中存储叶子识别信息、压缩代码长度以及CJK字符或单词的指针。叶子识别信息是用来唯一地识别叶子的信息。压缩代码长度是表示与分支60-1至60-n中每一个进行比较的压缩数据的位串中的有效长度的信息。当压缩代码被扩展时,CJK字符或单词的指针是唯一地表示扩展数据的信息。该指针与扩展数据的指针相对应。

例如,假定位串“010111110111101”被分配给分支60-4,与分支60-4连接的叶子61-4的压缩代码长度是“11”,并且由CJK字符或单词的指针表示的CJK字符是“東”。在这种情况下,从位串的最高位至第十一位的位串“01011111011”是与CJK字符“東”相对应的压缩代码。

图10是示出了根据本实施方式的压缩单元的配置的示例的功能框图。如图10所示,压缩单元100a包括文件读取单元101、确定单元102、第一编码单元103、第二编码单元104、更新单元105和文件写入单元106。

文件读取单元101是读出文件F1中的内容部分的数据的处理单元。文件读取单元101提取包括在从顶部读出的数据中的字符代码串,并且将所提取的字符代码串顺序地输出至确定单元102。例如,如果文件F1是英文,则文件读取单元101提取为从第一字符至终结符的部分的字符代码串作为英语单词。如果文件F1是CJK字符或日语单词,则文件读取单元101从第一字符开始以字符为单位提取字符代码串作为CJK字符或日语单词。

确定单元102是将字符代码串与位滤波器C1进行比较且确定字符代码串是否命中位滤波器C1的处理单元。如果字符代码串命中位滤波器C1,则确定单元102将字符代码串输出至第一编码单元103。当字符代码串是CJK字符或日语单词时这样进行。如果字符代码串没有命中位滤波器C1,则确定单元102将字符代码串输出至第二编码单元104。当字符代码串是英语单词时这样进行。

现在将参考图8A描述当要被确定的字符代码串是CJK字符的字符代码串时由确定单元102执行的处理。假定要被确定的字符代码串是CJK字符“東”的字符代码串“E69DB1”。确定单元102从顶部开始每次通过2元语法将要被确定的字符代码串与位滤波器C1的2元语法进行比较,并且指定位图。例如,如果字符代码串是“E69DB1”,则确定单元102将与“E69D”和“9DB1”相对应的位图进行组合。作为示例,确定单元102通过在位图中的每个数字中将“1”设置为与组合的位图相对应的数字且将“0”设置为其它数字来对位图进行组合。

例如,假定“E69D”的位图是“1_0_0_0_0”,而“9DB1”的位图是“0_1_1_0_0”。在这种情况下,通过对两个位图进行组合而获得的位图是“1_1_1_0_0”。

确定单元102将组合的位图与位滤波器C1的指针进行比较,并且指定由与位图相对应的指针指出的位置处的CJK字符。然后,确定单元102从指定的CJK字符顺序地搜索与要被确定的字符代码串相对应的CJK字符。此处,假定静态字典包括日语单词的单位或CJK字符的单位。由于存在与要被确定的字符代码串相对应的CJK字符,所以确定单元102确定要被确定的字符代码串命中位滤波器C1。当要被确定的字符代码串是日语单词的字符代码串时由确定单元102执行的处理与当要被确定的字符代码串是CJK字符的字符代码串时由确定单元102执行的处理类似,从而将省略其描述。

第一编码单元103是基于静态字典C2对从确定单元102获得的字符代码串进行编码的处理单元。第一编码单元103参考静态字典C2,根据静态字典C2来指定与字符代码串相对应的CJK字符或日语单词,并且指定与已经被指定的CJK字符或日语单词相对应的压缩代码。然后,第一编码单元103生成包括标识符“0”和登记在静态字典C2中的CJK字符或日语单词的压缩代码的压缩数据。然后,第一编码单元103将压缩数据输出至文件写入单元106。

第二编码单元104是基于动态字典对从确定单元102获得的字符代码串进行编码的处理单元。第二编码单元104将字符代码串存储在作为编码单元的存储区域A1中。第二编码单元104将存储区域A1与存储在作为参考单元的存储区域A2中的数据进行比较,并且搜索最长匹配字符串。

如果最长匹配字符串等于或多于预定长度Lmin,则第二编码单元104将最长匹配字符串登记在动态字典单元中的存储区域A3中。第二编码单元104基于动态字典单元的登记内容生成压缩代码。换言之,第二编码单元104将登记在动态字典单元中的最长匹配字符串的登记号指定为字符串的压缩代码。第二编码单元104生成包括标识符“1”和动态字典中的登记号的压缩数据,并且将压缩数据输出至文件写入单元106。

例如,如果字符串“KataokaΔ”是存储区域A3中第二个登记的最长匹配字符串,则第二编码单元104在参考表T1的登记号下登记“00000111”作为与最长匹配字符串“KataokaΔ”相对应的登记号。由于最长匹配字符串“KataokaΔ”的第一字符“K”被存储在存储区域A3中的“30”下,所以第二编码单元104在该存储位置下登记“000000011110”。由于最长匹配字符串“KataokaΔ”的数据长度是“8”,所以第二编码单元104在该数据长度下登记“10000”。

如图3所示,如果最长匹配字符串“KataokaΔ”被登记在动态字典单元中,则第二编码单元104将最长匹配字符串“KataokaΔ”的登记号设置为“00000111”。在这种情况下,第二编码单元104将字符串“KataokaΔ”的压缩代码设置为“00000111”。因此,第二编码单元104生成包括标识符“1”和登记号“00000111”的压缩数据作为字符串“KataokaΔ”的压缩数据。然后,第二编码单元104将压缩数据输出至文件写入单元106。

如果与要被编码的字符串相同的字符串已被登记在存储区域A3中,则第二编码单元104将已登记的字符串的登记号指定为字符串的压缩代码。例如,第二编码单元104将要被编码的字符串与存储区域A3中的每个字符串进行比较,并且如果与要被编码的字符串相同的字符串没有被登记在存储区域A3中,则搜索上述最长匹配字符串。

更新单元105是如下处理单元,其在第二编码单元104完成对最长匹配字符串的搜索之后,通过将存储在存储区域A1中的字符串存储在存储区域A2中来更新存储区域A2。每当第二编码单元104完成对最长匹配字符串的搜索时,更新单元105更新存储区域A2。

文件写入单元106是从第一编码单元103和第二编码单元104获得压缩数据并且将所获得的压缩数据写入存储区域A4的处理单元。

图11是示出了根据本实施方式的扩展单元的配置的示例的功能框图。如图11所示,扩展单元100b包括文件读取单元110、标识符确定单元111、第一扩展转换单元112、第二扩展转换单元113、更新单元114和文件写入单元115。

文件读取单元110是将压缩文件F2中的压缩数据读出至存储区域B1的处理单元。如果完成对存储在存储区域B1中的压缩数据的处理,则文件读取单元110从压缩文件F2读出新的压缩数据,并且对存储在存储区域B1的压缩数据进行更新。

然后,文件读取单元110读出存储在压缩文件F2的报尾单元中的动态字典单元中的信息,并且将其存储在存储区域B2中。

标识符确定单元111是读出存储在存储区域B1中的压缩数据的标识符并且确定标识符是“0”还是“1”的处理单元。标识符与压缩数据的第一位相对应。如果标识符是“0”,则静态字典对压缩数据进行了编码。如果标识符是“1”,则动态字典对压缩数据进行了编码。

如果压缩数据的标识符是“0”,则标识符确定单元111将压缩数据输出至第一扩展转换单元112。如果压缩数据的标识符是“1”,则标识符确定单元111将压缩数据输出至第二扩展转换单元113。

第一扩展转换单元112是通过使用扩展树60将压缩数据扩展成当字符代码被转换时的状态的处理单元。扩展树60的数据结构与图9所示的数据结构相对应。第一扩展转换单元112将被分配给树60的每个分支的位串与不包括标识符的压缩数据进行比较,并且用与压缩数据的位串相同的位串来指定被映射至分支的叶子。第一扩展转换单元112参考所指定的叶子,并且指定CJK字符或日语单词的指针。第一扩展转换单元112用其字符代码要被转换的字符代码系统的字符代码表200来替换压缩时所使用的字符代码系统的字符代码表200。然后,第一扩展转换单元112基于替换的字符代码表200和所指定的指针将压缩数据的扩展数据转换成其字符代码被转换的扩展数据。然后,第一扩展转换单元112将经转换的扩展数据输出至文件写入单元115。

在图9中,例如,假定位串“010111110111101”命中树60的分支60-4,与分支60-4连接的叶子61-4的压缩代码长度是“11”,并且由CJK字符或单词的指针表示的CJK字符是“東”。在这种情况下,第一扩展转换单元112将字符代码表200中的从UTF-8被转换成UTF-16的扩展字符代码串“6771”指定为与压缩数据的位串中从最高位至第十一位的位串“01011111011”相对应的扩展数据。

第二扩展转换单元113是通过使用存储在存储区域B2中的动态字典单元的信息将压缩数据扩展成当字符代码被转换时的状态的处理单元。第二扩展转换单元113通过从压缩数据移除标识符来获得动态字典单元中的登记号。第二扩展转换单元113将所获得的登记号与参考表T1进行比较,并且指定存储在存储区域B2中的扩展数据的存储位置和数据长度。第二扩展转换单元113获得与来自存储区域B2的存储位置和数据长度相对应的字符代码串,并且根据所获得的字符代码串生成扩展数据。然后,第二扩展转换单元113对所生成的扩展数据的字符代码进行转换,并且将其转换成其字符代码被转换的扩展数据。然后,第二扩展转换单元113将经转换的扩展数据输出至文件写入单元115。

现在将通过假定从压缩数据获得的登记号例如为“00000111”来说明由第二扩展转换单元113执行的处理。第二扩展转换单元113将登记号“00000111”与参考表T1进行比较,并且获得存储位置“000000011110”和数据长度“1000”。然后,第二扩展转换单元113参考存储区域B2,并且获得从存储位置“000000011110”开始且具有数据长度“1000”的字符串“KataokaΔ”的字符代码串。然后,第二扩展转换单元113将所获得的字符串“KataokaΔ”的字符代码串的字符代码从UTF-8转换成UTF-16,并且将其转换成其字符代码被转换的扩展数据。在包括ASCII的任意字符代码系统中,英文字符具有相同的字符代码串。因此,即使将所生成的扩展数据的字符代码从UTF-8转换成UTF-16,字符代码串仍保持相同。

更新单元114是对存储压缩数据的存储区域B1进行更新的处理单元。如果压缩数据的标识符是“0”,则更新单元114删除由第一扩展转换单元112从存储区域B1读出的压缩数据。如果压缩数据的标识符是“1”,则更新单元114删除由第二扩展转换单元113从存储区域B1读出的压缩数据。

文件写入单元115是从第一扩展转换单元112和第二扩展转换单元113获得扩展数据并且将所获得的扩展数据写入存储区域B3的处理单元。

现在将描述图10和图11所示的压缩单元100a和扩展单元100b的处理过程。

图12是示出了根据本实施方式由压缩单元执行的处理过程的流程图。如图12所示,压缩单元100a执行预处理(步骤S101)。在步骤S101处的预处理中,压缩单元100a获取存储单元100c中的存储区域A1、存储区域A2和存储区域A3。

压缩单元100a读出要被压缩的文件F1(步骤S102),并且提取字符代码串(步骤S103)。压缩单元100a将字符代码串与位滤波器C1进行比较,并且确定字符代码串是否命中位滤波器C1(步骤S104)。

如果字符代码串没有命中位滤波器C1(在步骤S104处,否),则压缩单元100a参考动态字典(步骤S105)。然后,压缩单元100a确定字符串是否已存在于动态字典中(步骤S106)。如果字符串已存在于动态字典中(在步骤S106处,是),则压缩单元100a进行至步骤S109。

如果字符串不存在于动态字典中(在步骤S106处,否),则压缩单元100a搜索最长匹配字符代码串(步骤S107)。然后,压缩单元100a更新动态字典(步骤S108),并且进行至步骤S109。

在步骤S109处,压缩单元100a输出包括标识符“1”和动态字典中的登记号的压缩数据(步骤S109)。然后,压缩单元100a写入压缩数据(步骤S110),并且确定其是否为文件F1的结尾(步骤S111)。如果该压缩数据不是文件F1的结尾(在步骤S111处,否),则压缩单元100a进行至步骤S103。如果该压缩数据是文件F1的结尾(在步骤S111处,是),则压缩单元100a完成处理。

如果在步骤S104处,字符代码串命中位滤波器C1(在步骤S104处,是),则压缩单元100a指定登记在静态字典C2中的压缩代码(步骤S112)。然后,压缩单元100a输出包括标识符“0”和压缩代码的压缩数据(步骤S113),并且进行至步骤S110。

图13是示出了根据本实施方式由扩展单元执行的处理过程的流程图。如图13所示,扩展单元100b执行预处理(步骤S201)。在步骤S201处的预处理中,扩展单元100b获取存储单元100c中的存储区域B1、存储区域B2和存储区域B3。

扩展单元100b读出压缩文件F2(步骤S202),并且读出扩展树60和动态字典(步骤S203)。例如,扩展单元100b将关于存储在报尾单元中的静态字典的信息存储在存储区域B2中。

然后,扩展单元100b确定压缩数据的标识符是否为“1”(步骤S204)。如果标识符是“0”(在步骤S204处,否),则扩展单元100b将扩展树60与压缩数据进行比较,并且指定扩展数据的指针(步骤S206A)。

扩展单元100b基于所指定的指针将压缩数据的扩展数据转换成其字符代码被转换的扩展数据(步骤S207)。例如,扩展单元100b用其字符代码要被转换的字符代码系统的字符代码表200来替换压缩时所使用的字符代码系统的字符代码表200。扩展单元100b基于替换的字符代码表200和所指定的指针将压缩数据的扩展数据转换成其字符代码被转换的扩展数据。然后,扩展单元100b进行至步骤S208。

如果压缩数据的标识符是“1”(在步骤S204处,是),则扩展单元100b基于动态字典中的登记号来指定扩展数据(步骤S205)。然后,扩展单元100b将所指定的扩展数据转换成其字符代码被转换的扩展数据(步骤S206B)。然后,扩展单元100b进行至步骤S208。在包括ASCII的任意字符代码系统中,英文字符具有相同的字符代码串。因此,例如,即使将所指定的扩展数据的字符代码从UTF-8转换成UTF-16,字符代码串仍保持相同。

在步骤S208处,扩展单元100b将扩展数据写入存储区域B3中(步骤S208)。

然后,扩展单元100b确定该扩展数据是否为压缩文件F2的结尾(步骤S209)。如果该扩展数据不是压缩文件F2的结尾(在步骤S209处,否),则扩展单元100b进行至步骤S204。如果该扩展数据是压缩文件F2的结尾(在步骤S209处,是),则扩展单元100b关闭压缩文件F2(步骤S210),并且完成扩展处理。

现在将描述根据本实施方式的信息处理设备100的效果。根据本实施方式的信息处理设备100接收压缩文件F2,在该压缩文件F2中,以包括单个字符或多个字符的字符串为单位对第一字符代码中的字符数据串进行压缩和编码。信息处理设备100将被包括在压缩文件F2中且被映射至字符数据串的压缩和编码的单位的压缩代码从与压缩和编码的单位的第一字符代码的表示相对应的信息转换成与压缩和编码的单位的第二字符代码的表示相对应的信息。信息处理设备100根据被映射至经压缩和编码的字符数据串的压缩和编码的单位以及经转换的字符数据串的压缩和编码的单位的压缩信息来生成扩展文件F3。根据上述配置,信息处理设备100可以通过仅对与压缩和编码相关的转换信息的部分执行字符代码转换处理,而不是扩展经压缩和编码的数据(压缩代码)且对其执行字符代码转换处理来生成扩展文件F3,其字符代码在扩展时被转换的字符数据串被输出至该扩展文件F3。因此,与当扩展之后共同执行转换时相比,信息处理设备100可以防止浪费地使用用于扩展处理和字符代码转换处理的存储区域。与当扩展之后共同执行转换时相比,信息处理设备100还可以减少扩展处理和字符代码转换处理的处理时间。

根据本实施方式的信息处理设备100确定通过对第一字符代码系统中的字符数据串进行压缩而获得的压缩代码的标识符是第一标识符还是第二标识符。当压缩代码的标识符是第一标识符时,信息处理设备100指定到从压缩代码获得的扩展字符的位置,并且基于扩展字符的指针以及通过用在其中存储第二字符代码系统的字符数据串的字符代码表200来替换在其中存储第一字符代码系统的字符数据串的字符代码表200而获得的字符代码表200,来扩展压缩代码。根据上述配置,与当扩展之后共同执行转换时相比,信息处理设备100可以防止浪费地使用用于扩展处理和字符代码转换处理的存储区域。与当扩展之后共同执行转换时相比,信息处理设备100还可以减少扩展处理和字符代码转换处理的处理时间。

根据本实施方式的信息处理设备100基于其中字符数据串被映射至与字符数据串相对应的压缩代码的静态字典C2以及要被压缩的字符数据串来确定要被压缩的字符数据串是否被登记在静态字典C2中。当要被压缩的字符数据串被登记在静态字典C2中时,信息处理设备100将要被压缩的字符数据串压缩成与静态字典C2中登记的要被压缩的字符数据串相对应的压缩代码。当要被压缩的字符数据串未被登记在静态字典C2中时,信息处理设备100将要被压缩的字符数据串登记在动态字典中,并且将要被压缩的字符数据串压缩成基于登记的位置的信息。根据上述配置,由于要被压缩的字符数据串被压缩成字符的单位,所以信息处理设备100可以执行扩展,并且在扩展时通过一遍来执行字符代码转换。

在下文中,将描述本实施方式中使用的硬件及软件。图14是计算机1中的硬件的配置示例。计算机1例如包括处理器301、随机存取存储器(RAM)302、只读存储器(ROM)303、驱动装置304、存储介质305、输入接口(I/F)306、输入装置307、输出接口(I/F)308、输出装置309、通信接口(I/F)310、存储区域网络(SAN)接口(I/F)311和总线312。硬件块经由总线312彼此连接。

RAM 302是可读且可写的存储装置,并且例如是诸如静态RAM(SRAM)和动态RAM(DRAM)的半导体存储器。可替选地,可以使用闪存等来代替RAM。ROM 303还包括可编程ROM(PROM)等。驱动装置304是执行对存储在存储介质305中的信息的读取和写入中至少之一的装置。存储介质305在其中存储由驱动装置304写入的信息。存储介质305例如是诸如硬盘的存储介质、诸如固态驱动(SSD)的闪存、光盘(CD)、数字通用光盘(DVD)和蓝光(注册商标)光盘。例如,计算机1针对多种类型的存储介质中的每一种提供驱动装置304和存储介质305。

输入接口306连接至输入装置307,并且是将从输入装置307接收的输入信号发送至处理器301的电路。输出接口308连接至输出装置309,并且是使输出装置309执行与来自处理器301的指令相对应的输出的电路。通信接口310是经由网络3执行通信控制的电路。例如,通信接口310是网络接口卡(NIC)。SAN接口311是通过存储区域网络执行与连接至计算机1的存储装置的通信控制的电路。例如,SAN接口311是主机总线适配器(HBA)。

输入装置307是根据操作发送输入信号的装置。例如,输入信号是诸如安装在计算机1的键盘或主体上的按钮的按键装置以及诸如鼠标和触摸面板的点击装置。输出装置309是根据对计算机1的控制来输出信息的装置。例如,输出装置309是诸如显示器的图像输出装置(显示装置)以及诸如扬声器的音频输出装置。例如,使用诸如触摸屏的输入/输出装置作为输入装置307和输出装置309。输入装置307和输出装置309可以被集成在计算机1中,或者可以是不被包括在计算机1中而是例如从外部连接至计算机1的装置。

例如,处理器301将存储在ROM 303和存储介质305中的计算机程序读出至RAM 302,并且根据所读出的计算机程序的过程来执行压缩单元100a的处理或者扩展单元100b的处理。在这种情况下,RAM 302用作处理器301的工作区域。当ROM 303和存储介质305在其中存储计算机程序文件(如随后将描述的应用程序24、中间件23和操作系统(OS)22)和数据文件(如要被压缩的文件F1和已被压缩的文件F2)时,并且当RAM 302被用作处理器301的工作区域时,实现存储单元100c的功能。将参考图15描述要由处理器301读出的计算机程序。

图15是要在计算机1中操作的计算机程序的配置示例。计算机1操作对图14所示的硬件组21(301至312)进行控制的操作系统(OS)22。当处理器301通过根据OS 22的过程来操作时,对硬件组21进行控制和管理。因此,在硬件组21中执行根据应用程序24或中间件23的处理。此外,在计算机1中,中间件23或应用程序24由RAM 302读出且由处理器301执行。

在调用压缩功能的情况下,当处理器301基于中间件23或应用程序24的至少一部分来执行处理(基于OS 22通过控制硬件组21来执行处理)时,实现压缩单元100a的功能。在调用扩展功能的情况下,当处理器301基于中间件23或应用程序24的至少一部分来执行处理(基于OS 22通过控制硬件组21来执行处理)时,实现扩展单元100b的功能。压缩功能和扩展功能可以包括在应用程序24自身中,或者当其被应用程序24调用时,可以是所执行的中间件23的一部分。

通过应用程序24(或中间件23)的压缩功能获得的压缩文件F2基于压缩文件F2中的压缩字典D1部分地可扩展。为了扩展压缩文件F2的中间部分,对压缩数据至要被扩展的部分的扩展处理进行抑制。因此,还抑制了处理器301上的负荷。由于在RAM 302上部分地开发要被扩展的压缩数据,所以还减少了工作区域。

图16是根据实施方式的系统中的装置的配置示例。在图16中的系统包括计算机1a、计算机1b、基站2和网络3。计算机1a通过有线或无线方式中至少之一连接至网络3,网络3连接至计算机1b。

图6所示的压缩单元100a和扩展单元100b可以被包括在图16所示的计算机1a或计算机1b两者中的任一个中。计算机1b可以包括压缩单元100a,并且计算机1a可以包括扩展单元100b。计算机1b可以包括压缩单元100a,并且计算机1a可以包括扩展单元100b。计算机1a和计算机1b两者可以包括压缩单元100a和扩展单元100b。

现在将说明根据上述的实施方式的修改的一部分。在不偏离本发明的范围的情况下,不仅可以作出下面描述的修改,而且可以作出设计上的各种改变。除了文件中的数据之外,要被压缩的目标可以是从系统输出的监控消息。例如,顺序地存储在缓冲区中的监控消息可以通过上述压缩处理被压缩,并且被存储为日志文件等。例如,在数据库中可以以页为单位执行压缩,或者可以以多个页为单位执行压缩。如上所述,要被压缩的数据不限于CJK字符。可以对混合CJK字符和字母数字字符的数据或者诸如图像和语音的数据执行上述压缩处理。

根据一个方面,与当扩展之后共同执行转换时相比,可以防止浪费地使用用于扩展处理和字符代码转换处理的存储区域。与当扩展之后共同执行转换时相比,还可以减少扩展处理和字符代码转换处理的处理时间。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1