字符转换的方法以及系统的制作方法

文档序号:6554128阅读:110来源:国知局

专利名称::字符转换的方法以及系统的制作方法
技术领域
:本发明是有关于一种字符转换技术,特别是有关于一种将字符于不同字符集间进行字符编码转换的方法及系统。
背景技术
:字符编码/译码(characterencoding/decoding)可应用于多语文应用系统中,多语文应用系统可实现于许多装置中,如个人数字助理(PersonalDigitalAssistants,PDAs)或其它手持通讯装置(mobilehandhelddevice)中。传统上,将字符(character)的字符码(charactercode)于不同的字符集(charactercodeset)中进行转换,是利用建立1对1对映表(one-to-onemappingtable)来完成。所建立的1对1对映表通常包括两个不同的字符集的字符码纪录,也就是包括来源字符集(sourcecharactercodeset)以及目的字符集(destinationcharactercodeset)的字符码纪录。举例而言,当来源字符集为ArabicISO(InternationalOrganizationforStandardization)而目的字符集为Unicode-UCS(UniversalCharacterSet)时,传统字符转换会建立如前所述的1对1对映表。在此例中,由于ArabicISO包括209个字符,而ArabicISO/Unicode-UCS使用16位(bit)即2字节(byte)来进行编码,因此一个单向的对映表需要有(209)×(2+2)=836字节。一个单向的对映表只能完成单向的字符转换,如由ArabicISO转换至Unicode-UCS或由Unicode-UCS转换至ArabicISO。如欲完成双向的字符转换,即可由ArabicISO转换至Unicode-UCS以及由Unicode-UCS转换至ArabicISO,则必须将对映表的大小加倍,因此双向1对1对映表的大小为836×2=1672字节。再者,字符转换的执行效率约可等同于在对映表中进行二元搜寻(binarysearch)的效率执行复杂度,就传统方法而言,其字符转换的执行复杂度(complexity)约为log2N,N=209。然而,不同的语文会利用不同的字符集进行字符编码,因此当某一装置支持多种语文的应用系统时,字符往往必须在各个不同的字符集中重复地进行转换,当转换频繁又欠缺有效率的转换方法时,字符转换问题便会形成。特别在如手持通讯装置等装置中,内存空间(memorysize)及中央处理单元(centralprocessingunit,CPU)的规格相当受限,因此传统字符转换方法无法满足现今及往后相关科技发展的需求。
发明内容有鉴于此,本发明的目的就在于提供系统化的字符转换方法,其可将字符于不同的字符集间进行字符码的转换。为达成上述目的,本发明提供一种字符转换方法,用以将字符编码由来源字符集转换至目的字符集。首先必须提供对映表,对映表用以表示来源字符集及目的字符集之间的关系,对映表是分析来源字符集及目的字符集而建立,对映表所包括的纪录是以来源字符集中数个不连续的范围为主。对映表的每一纪录是对映至一范围,并包括该范围的启始值、结束值以及位移值,位移值用以作为启始值于目的字符集中的对应值。接着,接收来源字符码,来源字符码是将欲进行转换的目标字符以来源字符集进行编码所得。再根据来源字符码,以二元搜寻法等方式搜寻对映表以获得启始值以及位移值。位移值用以表示启始值于目的字符集的对应值。然后,根据启始值及来源字符码,计算差值。例如,将来源字符码减去启始值而得到差值。最后,将位移值与差值相加,以得到目的值。目的值是作为目标字符于目的字符集中的一指针(index),也就是其后可根据指针,得到目标字符以目的字符集进行编码的目的字符码。再者,本发明提出一种字符转换系统,用以将字符编码由来源字符集转换至目的字符集,包括对映表、接收模块、搜寻模块、计算模块以及相加模块,用以执行上述的字符转换方法。图1是显示本发明所揭示的方法的执行流程图。图2是显示本发明所揭示的系统的功能方块图。图3是显示本发明所揭示的方法的一实施例的执行流程图。符号说明900-对映表;902-接收模块;904-搜寻模块;906-计算模块;908-相加模块;910-获得模块。具体实施例方式请参照图1,图1是显示本发明所揭示的方法的执行流程图。首先,分析来源字符集及目的字符集,主要分析来源字符集及目的字符集中所包含的数个不连续的范围(步骤S700)。根据分析的结果,可建立一个对映表(步骤S702)。因此,对映表是依据分析所得到的信息,指出来源字符集与目的字符集之间的关系。当对映表建立完成后,对映表会包含用以表示来源字符集中不连续范围的多笔纪录(entry)。接着,接收来源字符码(步骤S704),来源字符码是将欲进行转换的目标字符以来源字符集进行编码所得。再根据来源字符码,以二元搜寻法等方式搜寻对映表以获得启始值以及位移值(步骤S706)。位移值可用以表示启始值于目的字符集中的对应值。然后,根据启始值及来源字符码计算差值(步骤S708)。例如,将来源字符码减去启始值而得到差值。最后,将位移值与差值相加,以得到目的值(步骤S710)。目的值为目标字符于目的字符集中的一指针,其后可根据此指针,得到目标字符以目的字符集进行编码的目的字符码。图2是显示本发明所揭示的系统的功能方块图。如图所示,本发明提出一种字符转换系统,用以将字符编码由来源字符集转换至目的字符集,包括对映表900、接收模块902、搜寻模块904、计算模块906以及相加模块908。对映表900用以表示来源字符集及目的字符集之间的关系,对映表是根据来源字符集和目的字符集中数个不相连续的范围所建立,而对映表包括多笔记录,用以表示来源字符集中的数个不连续范围。每一纪录是对映至一个范围,并包括该范围的启始值、结束值以及位移值,其中位移值用以作为启始值于目的字符集中的一对应值。对映表可借由分析来源字符集及目的字符集而建立。接收模块902用以接收来源字符码,来源字符码是将目标字符以来源字符集进行编码所得。搜寻模块904用以根据来源字符码,搜寻对映表900以获得启始值以及位移值,位移值用以表示启始值于目的字符集中的对应值。搜寻模块904可以二元搜寻法进行搜寻。计算模块906用以根据启始值及来源字符码,计算差值。计算模块906进行差值的计算时,是将来源字符码减去启始值而得到。相加模块908用以将位移值与差值相加,以得到目的值。目的值可作为目标字符于目的字符集中的一指针。转换系统还可包括获得模块910,获得模块910用以根据指针得到目标字符以目的字符集进行编码的目的字符码。请参照图3,图3是显示本发明所揭示的方法的一实施例的执行流程图。在此实施例中,来源字符集为UCS而目的字符集为ArabicISO。欲进行字符转换的目标字符假设为,应用本发明所提出的方法可将其字符编码由UCS转换至ArabicISO。目标字符以来源字符集UCS进行编码的来源字符码为“Ox642”,以目的字符集ArabicISO进行编码的目的字符码为“0xe2”。首先,主要依据字符集中不连续的范围,分析来源字符集UCS及目的字符集ArabicISO,然后根据分析的结果建立一个对映表。表一即为根据分析结果所建立的对映表。在表一中,共有8个纪录用以代表来源字符集即UCS中8个字符码范围,同时指出来源字符集USC及目的字符集ArabicISO之间的对应关系。表一中的每一笔纪录包括其所对应的范围的启始值、结束值以及位移值。如图中第一笔纪录所示,来源字符集UCS中第一个字符码范围的启始值为0x0000,结束值为0x00a0,即第一个字符码范围是介于0x0000和0x00a0之间,而来源字符集UCS的第一个字符码范围是对应于目的字符集ArabicISO的第一个字符码范围,因此来源字符集UCS的第一个字符码范围的启始值0x0000是对应于目的字符集ArabicISO的第一个字符码范围的启始值0x0,而启始值0x0即为第一笔记录中的位移值。同理,对于第二笔纪录而言,来源字符集UCS的第二个字符码范围的启始值为0x00a4,结束值为0x00a4,而启始值0x00a4于目的字符集ArabicISO中的对应值为0xa1,此即为位移值。因此,如表一中所示,范围与范围之间是不连续的,例如,第一范围的结束值为0x00a0,而第二范围的启始值是0x00a4,而在表一中,这些不相互连续的范围是依照其启始值以递减方式排列。表一请回到图3,首先接收目标字符的来源字符码“0x0642”(步骤S800),接着根据来源字符码“0x0642”搜寻表一,以得到启始值以及位移值(步骤S802)。由于来源字符码“0x0642”是位于范围“0x0640”到“0x0652”之中,在搜寻完成后,会获得启始值“0x0640”以及位移值“0xc0”。然后,将来源字符码“0x0642”减去启始值“0x0640”,以得到差值“0x02”(步骤S804)。再将位移值“0xc0”与差值“0x02”相加,得到目的值(步骤806)。目的值为目标字符于目的字符集中的一指针,其后可根据此指针,得到目标字符以目的字符集ArabicISO进行编码的目的字符码(步骤808)。在此,表一为一个单向转换的对映表,仅用于将字符由Unicode-UCS转换至ArabicISO。若欲进行双向的字符转换,即由Unicode-UCS转换至ArabicISO以及由ArabicIsO转换至Unicode-UCS,则如表二所示的对映表必须被建立。对于表二而言,来源字符集为ArabicISO而目的字符集为Unicode-UCS。如表二所示,共有7个纪录用以表示来源字符集ArabicISO中7个不相连续的字符码范围。同样地,表二中的每一纪录包括所对应范围的启始值、结束值以及位移值。如图中的第一笔纪录所示,来源字符集ArabicISO的第一个字符码范围的启始值为0x0,结束值为0xa0,而启始值0x0于目的字符集USC中的对应值为0x0,此即为位移值。同理,对于第二笔纪录而言,来源字符集ArabicISO的第二个字符码范围的启始值为0xa4,结束值为0xa4,而启始值0xa4于目的字符集USC中的对应值为0xa1,此即为位移值。因此,如表二中所示,范围与范围之间是不连续的,例如,第一范围的结束值为0xa0,而第二范围的启始值是0xa4,而在表二中,这些不相互连续的范围是依照其启始值以递减方式排列。表二对于双向字符转换而言,即由Unicode-UCS转换至ArabicISO以及由ArabicISO转换至Unicode-UCS,对映表的总尺寸(size)可视为表一与表二的长度总和,总尺寸是取决于字符集ArabicISO和Unicode-UCS中所包含的不相连续的字符码范围的个数。如本例中所示,表一包含8笔记录,以用来记录8个字符码范围,而每一笔纪录包含启始值、结束值及位移值,其各需2个字节,因此每一笔纪录必须使用6个字节以储存资料。因此,表一的总尺寸为8×6=48字节。表二具有7个纪录,用来记录7个字符码范围,每一笔纪录包含启始值、结束值及位移值,各需2字节,因此每一笔纪录必须使用6个字节以储存资料。因此,表二的总尺寸为7×6=42字节。对于由Unicode-UCS转换至ArabicISO以及由ArabicISO转换至Unicode-UCS的双向转换而言,对映表的总尺寸为8×6+7×6=48+42=90个字节。若进一步将ArabicISO和Unicode-UCS字符集的编码表(encodingtables)考量在内,那么所需的内存空间会变为48+42+(209×2×2)=926个字节。相较于传统方法所需的1672字节,本发明对内存空间的要求大幅减少。再者,应用本发明所提出的方法,对于执行的效率而言,将字符由Unicode-UCS转换至ArabicISO的执行复杂度为log28,而将字符由ArabicISO转换至Unicode-UCS的执行复杂度为log27。由上可知,本发明所提出的方法及系统大幅提升字符转换的效率,当本发明所提出的方法或系统应用于手持通讯装置时,更显示其执行效能,可增加手持通讯装置的数据处理效率。本发明所提出的方法及系统,或者其中某些部分,可能以计算机程序(计算机指令)的方式加以实现,此计算机程序(计算机指令)可能建置于储存媒体中,如软盘(floppydiskettes)、光盘(CD-ROMS)、硬盘(harddrives)、韧体(firmware)或其它任何机器可辨读的储存媒体中。当前述的计算机程序(计算机指令)经由如计算机等机器加载并执行时,此加载计算机程序(计算机指令)的机器即转换为一用以实现本发明的装置。再者,本发明所揭示的方法及系统可以计算机程序(计算机指令)的方式进行传输,传输媒体如电线(electricalwire)、电缆(cable)、光纤(fiberoptics)、以及其它任何可进行传输的传输媒体或无线传输(wirelesscommunication)。当前述传输的计算机程序(计算机指令)经由如计算机等机器加载并执行时,此加载计算机程序(计算机指令)的机器即转换为一用以实现本发明的装置。又再者,本发明所揭示的方法及系统可以计算机程序(计算机指令)的型态应用于一通用目的(general-purpose)处理器中,当前述应用于通用目的处理器的计算机程序(计算机指令)与该处理器相结合时,即提供一用以实现本发明的装置,其功能相当于具有特定功能的逻辑电路(logiccircuits)。虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟习此技艺者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视申请专利范围所界定者为准。权利要求1.一种字符转换方法,用以将字符编码由一来源字符集转换至一目的字符集,包括下列步骤分析上述来源字符集及上述目的字符集;根据上述的分析结果,提供一对映表,其用以表示上述来源字符集及上述目的字符集之间的对应关系;接收来源字符码,上述来源字符码是将一目标字符以上述来源字符集进行编码所得;根据上述来源字符码,搜寻上述对映表,以获得一对应值;以及根据上述对应值计算出一目的值。2.如权利要求1所述的字符转换方法,其中上述目的值为上述目标字符于上述目的字符集中的一指针,而上述方法是根据上述指针,得到上述目标字符以上述目的字符集进行编码的目的字符码。3.如权利要求1所述的字符转换方法,其中上述对映表是根据上述来源字符集及上述目的字符集中所包含的不相连续的字符码范围所建立。4.如权利要求3所述的字符转换方法,其中上述对应表包含多笔记录,每一笔记录对应于上述来源字符集中的一字符码范围,并且具有一启始值、一结束值,以及一位移值,其中上述启始值与结束值是用以表示所对应的字符码范围,而上述位移值是用以表示上述启始值于上述目的字符集中的对应值。5.如权利要求4所述的字符转换方法,其中在上述根据上述来源字符码搜寻上述对映表的步骤中,上述方法是以二元搜寻法对上述对映表进行搜寻,以获得一启始值及一位移值。6.如权利要求5所述的字符转换方法,其中在上述根据上述对应值计算出一目的值的步骤中,上述方法是根据上述启始值及上述来源字符码,计算一差值,以及将上述位移值与上述差值相加,以得到一目的值。7.如权利要求1所述的字符转换方法,其中上述差值的计算是将上述来源字符码减去上述启始值而得到。8.一种字符转换系统,用以将字符编码由一来源字符集转换至一目的字符集,包括一对映表,其用以表示上述来源字符集及上述目的字符集之间的关系,上述对映表是根据上述来源字符集及上述目的字符集中所包含的不相连续的字符码范围所建立;一接收模块,用以接收来源字符码,上述来源字符码是将一目标字符以上述来源字符集进行编码所得;一搜寻模块,其耦接于上述接收模块,用以根据上述来源字符码,搜寻上述对映表以获得一启始值以及一位移值,其中上述位移值用以表示上述启始值于上述目的字符集中的对应值;一计算模块,其耦接于上述搜寻模块,用以根据上述启始值及上述来源字符码,计算一差值;以及一相加模块,其耦接于上述计算模块,用以将上述位移值与上述差值相加,以得到一目的值。9.如权利要求8所述的字符转换系统,其中上述目的值为上述目标字符于上述目的字符集中的一指针,而上述字符转换系统另包括一获得模块,其耦接于上述相加模块,用以根据上述指针,得到上述目标字符以上述目的字符集进行编码的目的字符码。10.如权利要求8所述的字符转换系统,其中上述搜寻模块是以二元搜寻法对上述对映表进行搜寻。11.如权利要求8所述的字符转换系统,其中上述对映表包含多笔记录,每一笔记录对应于上述来源字符集中的一字符码范围,并且具有一启始值、一结束值,以及一位移值,其中上述启始值与结束值是用以表示所对应的字符码范围,而上述位移值是用以表示上述启始值于上述目的字符集中的对应值。12.如权利要求8所述的字符转换系统,其中上述计算模块进行上述差值的计算时,是将上述来源字符码减去上述启始值而得到。13.一种字符转换方法,用以将字符编码由一来源字符集转换至一目的字符集,包括下列步骤提供一对映表,其用以表示上述来源字符集及上述目的字符集之间的关系,上述对映表是根据上述来源字符集及上述目的字符集中所包含的不相连续的字符码范围所建立;接收来源字符码,上述来源字符码是将一目标字符以上述来源字符集进行编码所得;根据上述来源字符码,搜寻上述对映表以获得一启始值以及一位移值,其中上述位移值用以表示上述启始值于上述目的字符集中的对应值;根据上述启始值及上述来源字符码,计算一差值;以及将上述位移值与上述差值相加,以得到一目的值。14.如权利要求13所述的字符转换方法,其中上述目的值为上述目标字符于上述目的字符集中的一指针,而上述字符转换方法另包括根据上述指针,得到上述目标字符以上述目的字符集进行编码的目的字符码。15.如权利要求13所述的字符转换方法,其中上述对映表是以二元搜寻法进行搜寻。16.如权利要求13所述的字符转换方法,其中上述对映表包含多笔记录,每一笔记录对应于上述来源字符集中的一字符码范围,并且具有一启始值、一结束值,以及一位移值,其中上述启始值与结束值是用以表示所对应的字符码范围,而上述位移值是用以表示上述启始值于上述目的字符集中的对应值。17.如权利要求13所述的字符转换方法,其中上述差值的计算是将上述来源字符码减去上述启始值而得到。全文摘要本发明提出一种字符转换方法,用以将字符编码由来源字符集转换至目的字符集。来源字符集及目的字符集经过分析而得到对映表,对映表用以表示来源字符集及目的字符集之间的关系。将目标字符以来源字符集进行编码之来源字符码,依据对映表而转换为以目的字符集而编码之目的字符码。文档编号G06F17/22GK1825301SQ200610001088公开日2006年8月30日申请日期2006年1月16日优先权日2005年1月24日发明者维克瑞·莎弯,亚伦·古布达,安古·杰恩申请人:竺发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1