(57)【要約】  【課題】  ＧＢ１８０３０による文字列に対して、確度の高い文字境界の特定方法およびこれを用いたデータ処理システムを実現し、ＧＢ１８０３０を用いたテキストデータ処理における実行効率を向上させる。  【解決手段】  ＧＢ１８０３０がサポートする文字種とこの文字種がＧＢ１８０３０において割り当てられている範囲とを対応付けて登録した文字種別表を格納した文字種別表４０と、処理対象である文字コード列と文字境界を特定すべき位置の情報とを入力して文字境界を特定する文字境界特定処理部３０とを備える。この文字境界特定処理部３０は、入力した文字コード列における文字境界を特定すべき位置にあるデータがＧＢ１８０３０の４バイト部の文字コードに含まれる場合に、このデータと文字種別表４０との照合とを照合して、このデータが含まれる文字コードを判別し、文字境界を特定する。  【選択図】  図２
2005250729.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより文字コード列における文字境界の特定を行うデータ処理方法であって、
前記コンピュータが、処理対象である文字コード列と文字境界を特定すべき位置の情報とを入力する第１のステップと、
前記コンピュータが、前記文字コード列における文字境界を特定すべき位置にあるデータを、所定の記憶装置に格納されている、文字コードセットがサポートする文字種と当該文字種が当該文字コードセットにおいて割り当てられている範囲とを対応付けて登録した文字種別表と照合する第２のステップと、
前記コンピュータが、前記データと前記文字種別表との照合結果に基づいて当該データを含む文字コードを判別し、文字境界を特定する第３のステップと
を含むことを特徴とするデータ処理方法。
【請求項２】
前記第１のステップでは、前記コンピュータが、１バイト文字、２バイト文字および４バイト文字を含む文字コードセットにおける文字コード列を入力し、
前記第２のステップでは、前記コンピュータが、前記データが前記４バイト文字の文字コードに含まれる場合に、当該データを前記文字種別表と照合することを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
前記第２のステップは、
前記コンピュータが、前記文字コードセットにおける１バイトごとの要素に関して１バイト文字か、２バイト文字の何バイト目か、４バイト文字の何バイト目かに応じてグループ分けしたうちのどのグループに前記データが該当するかを判別するステップと、
前記コンピュータが、前記グループ分けに基づく判別結果に応じて、前記データが前記４バイト文字の文字コードに含まれるか否かを判断するステップと
を含むことを特徴とする請求項２に記載のデータ処理方法。
【請求項４】
前記第１のステップでは、前記コンピュータが、ＧＢ１８０３０による文字コード列を入力し、
前記第２のステップでは、前記コンピュータが、前記文字コード列における文字境界を特定すべき位置にあるデータがＧＢ１８０３０の４バイト部の文字コードに含まれる場合に、当該データを前記文字種別表と照合することを特徴とする請求項１に記載のデータ処理方法。
【請求項５】
前記第２のステップは、
前記文字コード列における文字境界を特定すべき位置にあるデータを含む２バイトのデータが、ＧＢ１８０３０における１バイトごとの要素に関して下記のＷ群、Ｘ群、Ｙ群、Ｚ群の４グループにグループ分けした場合におけるＹＺまたはＺＹのバイト列に該当するか否かを、前記コンピュータが判別するステップと、
前記グループ分けに基づく判別結果に応じて、前記２バイトのデータがＧＢ１８０３０の４バイト部の文字コードに含まれるか否かを、前記コンピュータが判断するステップと
を含むことを特徴とする請求項４に記載のデータ処理方法。
Ｗ群：0x00-0x2F,0x3A-0x3F,0x7F,0x80,0xFF
Ｘ群：0x40-0x7E
Ｙ群：0x81-0xFE
Ｚ群：0x30-0x39
【請求項６】
文字コードに対する処理を行う装置において、
文字コードセットがサポートする文字種と当該文字種が当該文字コードセットにおいて割り当てられている範囲とを対応付けて登録した文字種別表を格納した文字種別表格納部と、
処理対象である文字コード列と文字境界を特定すべき位置の情報とを入力し、当該文字コード列における文字境界を特定すべき位置にあるデータと前記文字種別表とを照合し、照合結果に基づいて当該データを含む文字コードを判別し、文字境界を特定する文字境界特定処理部と
を備えることを特徴とする装置。
【請求項７】
前記文字境界特定処理部は、１バイト文字、２バイト文字および４バイト文字を含む文字コードセットにおける文字コード列を入力し、当該文字コード列における文字境界を特定すべき位置にある前記データが当該４バイト文字の文字コードに含まれる場合に、当該データを前記文字種別表と照合することを特徴とする請求項６に記載の装置。
【請求項８】
前記文字境界特定処理部は、前記文字コードセットにおける１バイトごとの要素に関して１バイト文字か、２バイト文字の何バイト目か、４バイト文字の何バイト目かに応じてグループ分けしたうちのどのグループに前記データが該当するかを判別し、当該データが前記４バイト文字の文字コードに含まれるか否かを判断することを特徴とする請求項７に記載の装置。
【請求項９】
前記文字境界特定処理部は、ＧＢ１８０３０による文字コード列を入力し、当該文字コード列における文字境界を特定すべき位置にあるデータがＧＢ１８０３０の４バイト部の文字コードに含まれる場合に、当該データを前記文字種別表と照合することを特徴とする請求項６に記載の装置。
【請求項１０】
前記文字境界特定処理部は、前記文字コード列における文字境界を特定すべき位置にあるデータを含む２バイトのデータが、ＧＢ１８０３０における１バイトごとの要素に関して下記のＷ群、Ｘ群、Ｙ群、Ｚ群の４グループにグループ分けした場合におけるＹＺまたはＺＹのバイト列に該当するか否かを判別し、当該２バイトのデータがＧＢ１８０３０の４バイト部の文字コードに含まれるか否かを判断することを特徴とする請求項９に記載の装置。
Ｗ群：0x00-0x2F,0x3A-0x3F,0x7F,0x80,0xFF
Ｘ群：0x40-0x7E
Ｙ群：0x81-0xFE
Ｚ群：0x30-0x39
【請求項１１】
コンピュータに、
処理対象である文字コード列と文字境界を特定すべき位置の情報とを入力する第１の処理と、
前記文字コード列における文字境界を特定すべき位置にあるデータを、所定の記憶装置に格納されている、文字コードセットがサポートする文字種と当該文字種が当該文字コードセットにおいて割り当てられている範囲とを対応付けて登録した文字種別表と照合する第２の処理と、
前記データと前記文字種別表との照合結果に基づいて当該データを含む文字コードを判別し、文字境界を特定する第３の処理と
を実行させることを特徴とするプログラム。
【請求項１２】
前記第１の処理では、１バイト文字、２バイト文字および４バイト文字を含む文字コードセットにおける文字コード列を入力する処理を、前記コンピュータに実行させ、
前記第２の処理では、前記データが前記４バイト文字の文字コードに含まれる場合に、当該データを前記文字種別表と照合する処理を、前記コンピュータに実行させることを特徴とする請求項１１に記載のプログラム。
【請求項１３】
前記第２の処理では、
前記文字コードセットにおける１バイトごとの要素に関して１バイト文字か、２バイト文字の何バイト目か、４バイト文字の何バイト目かに応じてグループ分けしたうちのどのグループに前記データが該当するかを判別する処理と、
前記グループ分けに基づく判別結果に応じて、前記データが前記４バイト文字の文字コードに含まれるか否かを判断する処理と
を前記コンピュータに実行させることを特徴とする請求項１２に記載のプログラム。
【請求項１４】
前記第１の処理では、ＧＢ１８０３０による文字コード列を入力する処理を、前記コンピュータに実行させ、
前記第２の処理では、前記文字コード列における文字境界を特定すべき位置にあるデータがＧＢ１８０３０の４バイト部の文字コードに含まれる場合に、当該データを前記文字種別表と照合する処理を、前記コンピュータに実行させることを特徴とする請求項１１に記載のプログラム。
【請求項１５】
前記第２の処理では、
前記文字コード列における文字境界を特定すべき位置にあるデータを含む２バイトのデータが、ＧＢ１８０３０における１バイトごとの要素に関して下記のＷ群、Ｘ群、Ｙ群、Ｚ群の４グループにグループ分けした場合におけるＹＺまたはＺＹのバイト列に該当するか否かを、前記コンピュータが判別する処理と、
前記グループ分けに基づく判別結果に応じて、前記２バイトのデータがＧＢ１８０３０の４バイト部の文字コードに含まれるか否かを、前記コンピュータが判断する処理と
を前記コンピュータに実行させることを特徴とする請求項１４に記載のプログラム。
Ｗ群：0x00-0x2F,0x3A-0x3F,0x7F,0x80,0xFF
Ｘ群：0x40-0x7E
Ｙ群：0x81-0xFE
Ｚ群：0x30-0x39
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータで文字を扱う際に用いられる文字コードの処理方法に関し、特に文字コード列に対する文字境界の特定方法、この方法を用いた装置並びにコンピュータにてこれらを実現するプログラムに関する。
【背景技術】
【０００２】
コンピュータで文字を扱うためには、個々の文字や記号に割り振られた文字コードが用いられる。文字コードには、情報交換用米国標準コードであるＡＳＣＩＩ（American Standard Code for Information Interchange）コードや多国語に対応するために制定された２バイトのコード体系であるUnicode、日本語文字コード体系のShift JISなど、各国言語の文字に応じて多くのコード体系が存在する。そして、中華人民共和国（以下、中国）の文字コードセットとして、ＧＢ１８０３０がある。
【０００３】
ＧＢ１８０３０は、西暦２０００年に中国政府によって制定された文字コードであり、UNICODEを包括し、中国で標準的に使用されていた文字コードであるＧＢＫに対する上位互換を保った１バイト、２バイト、４バイトの可変調コードである（例えば、非特許文献１、２参照）。収録可能文字数は1,611,668文字（約１６０万文字）であり、１バイト部、２バイト部はＧＢＫと互換とし、４バイト部に中国の少数民族の使用文字およびUNICODEの未収録文字を収録することとしている。ＧＢ１８０３０が当面想定する少数民族の使用文字は、ウィグル文字、チベット文字、モンゴル文字、イ文字、ハングルである。
【０００４】
このＧＢ１８０３０の４バイト部の文字コードでは、第１バイトおよび第３バイトに0x80から0xFEまでの１２６バイトが割り当てられ、第２バイトおよび第４バイトに0x30から0x39までの１０バイトが割り当てられている。例えば、図５に示すように、図５（Ａ）の文字には［0x82,0x35,0x98,0x33］というコードが割り当てられており、図５（Ｂ）の文字には［0x95,0x32,0x82,0x36］というコードが割り当てられている。
【０００５】
【非特許文献１】“ＧＢ１８０３０関連情報”、[online]、２００１年１０月３日、漢字文献情報処理研究会（Japan Association for East Asian Text Processing（JAET））、[２００３年１月２８日検索]、インターネット＜ＵＲＬ：http://www.jaet.gr.jp/gb18030＞
【非特許文献２】三上喜貴著「文字符号の歴史」共立出版、２００２年、ｐ．１５３−１５６
【発明の開示】
【発明が解決しようとする課題】
【０００６】
コンピュータで文字を扱う場合に、テキストデータから所定の文字列を前方参照したり、破損した文字を復旧したりするためには、コード列の中から、１つの文字に対応する部分と隣接する他の文字に対応する部分とを識別するための文字境界を正確に特定することが重要である。
文字列の先頭から順番に文字コードをたどって文字境界を認識していけば、確実に所望の位置の文字境界を特定することが可能である。しかし、文字列の先頭から識別しようとする文字境界の位置まで数万字もあるような場合、文字境界走査の作業が膨大となり、前方参照や文字の復旧といった処理の実行速度が著しく低下してしまう。
【０００７】
この文字境界を見つけるための難易度は、文字コードの種類によって異なる。例えば、ＡＳＣＩＩコードのような１バイトのみで定義されている文字コードでは、１バイトの各コードが１つの文字に対応しているので、もともと文字境界を探索するという問題が生じない。また、Unicodeは、文字境界を考慮して符号化の設計が行われているので、前後、数文字程度を参照するだけで、確実に文字境界を見つけだすことができる。これに対し、１バイト、２バイト、４バイトの文字コードが混在するＧＢ１８０３０では、特に４バイト部の文字に対して、文字列の途中で適確に所望の位置の文字境界を特定することが困難であった。
【０００８】
例えば、所定の文字列中に次のような文字コードの並びがあった場合を考える。
・・・,0x82,0x30,0x82,0x31,0x82,0x32,0x82,0x33,・・・
上述したように、ＧＢ１８０３０の４バイト部では、第１バイトおよび第３バイトと第２バイトおよび第４バイトとに同じ値が割り当てられているので、上記のコード列において文字境界は、
（Ａ）  ・・・,[0x82,0x30,0x82,0x31],[0x82,0x32,0x82,0x33],・・・
（Ｂ）  ・・・,0x82,0x30],[0x82,0x31,0x82,0x32],[0x82,0x33,・・・
という２つの可能性が考えられる。ここで、（Ａ）のコードは図６（Ａ）の２文字に対応し、（Ｂ）のコードは図６（Ｂ）の文字に対応している。
【０００９】
このように、異なる文字境界の特定によって得られた４バイトの文字コードに対して、いずれも該当する文字が存在するため、このコード列を参照しただけでは、（Ａ）と（Ｂ）のどちらで文字境界を特定すべきかを判断することができない。すなわち、このコード列に対して正確に文字境界の特定を行うためには、文字列の先頭から順にたどらなければならず、上述した処理速度の低下を招来してしまう。
【００１０】
そこで本発明は、ＧＢ１８０３０による文字列に対して、確度の高い文字境界の特定方法およびこれを用いたデータ処理システムを実現することを目的とする。
また本発明は、ＧＢ１８０３０において確度の高い文字境界の特定を実現することにより、ＧＢ１８０３０を用いたテキストデータ処理における実行効率を向上させることを他の目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成する本発明は、コンピュータにより文字コード列における文字境界の特定を行う、次のようなデータ処理方法として実現される。このデータ処理方法は、コンピュータが、１バイト文字、２バイト文字および４バイト文字を含む文字コードセットにより記述された処理対象である文字コード列と文字境界を特定すべき位置の情報とを入力するステップと、この文字コード列における文字境界を特定すべき位置にあるデータが４バイト文字の文字コードに含まれる場合に、所定の記憶装置に格納されている文字種別表と照合するステップと、このデータと文字種別表との照合結果に基づいて、このデータを含む文字コードを判別し、文字境界を特定するステップとを含むことを特徴とする。
【００１２】
ここで、１バイト文字、２バイト文字および４バイト文字を含む文字コードセットとして具体的には、中国の文字コードセットであるＧＢ１８０３０が挙げられる。また、文字種別表には、文字コードセットがサポートする文字種と、それらの文字種が文字コードセットにおいて割り当てられているコードの範囲とを対応付けて登録してある。
【００１３】
さらに好ましくは、特定すべき位置にあるデータと文字種別表との照合を行うために、このコンピュータは、文字コードセットにおける１バイトごとの要素に関して１バイト文字か、２バイト文字の何バイト目か、４バイト文字の何バイト目かに応じてグループ分けしたうちのどのグループにこのデータが該当するかを判別する。そして、このグループ分けに基づく判別結果に応じて、このデータが４バイト文字の文字コードに含まれるか否かを判断する。これにより、このデータが４バイト文字の文字コードに含まれると判断される場合にデータと文字種別表とを照合して文字境界の特定を行う。
【００１４】
ここでさらに、文字コードセットとしてＧＢ１８０３０が用いられているならば、コンピュータは、ＧＢ１８０３０における１バイトごとの要素に関して下記のＷ群、Ｘ群、Ｙ群、Ｚ群の４グループにグループ分けした場合におけるＹＺまたはＺＹのバイト列に該当するか否かを判別する。
Ｗ群：0x00-0x2F,0x3A-0x3F,0x7F,0x80,0xFF
Ｘ群：0x40-0x7E
Ｙ群：0x81-0xFE
Ｚ群：0x30-0x39
そして、この２バイトのデータがＹＺまたはＺＹのバイト列に該当するならば、この２バイトのデータがＧＢ１８０３０の４バイト部の文字コードに含まれると判断し、データと文字種別表とを照合して文字境界の特定を行う。
【００１５】
また、上記の目的を達成する他の本発明は、文字種別表を格納した文字種別表格納部と、上述した工程により処理対象の文字コード列に対する文字境界の特定を行う文字境界特定処理部とを備えた装置として実現される。この装置としては、コンピュータやＰＤＡ（Personal Digital Assistants ）、携帯電話など、テキストデータによる処理を行う情報機器全般が該当する。
さらに本発明は、コンピュータを制御して上記のデータ処理方法における各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。
【発明の効果】
【００１６】
以上のように構成された本発明によれば、ＧＢ１８０３０のような１バイト文字、２バイト文字および４バイト文字を含む文字コードセットによる文字列に対して、確度の高い文字境界の特定方法およびこれを用いたデータ処理システムを実現することができる。
またこれにより、テキストデータ処理における実行効率を向上させることができる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して、本発明を実施するための最良の形態（以下、実施形態）について詳細に説明する。
まず、本発明の概要を説明する。本発明は、ＧＢ１８０３０の４バイト部の文字コードで表される文字列に現れるバイト列の偏りを利用することで、確度の高い文字境界の特定を実現する。ここで、バイト列の偏りとしては、次の２つを想定する。
・ＧＢ１８０３０の４バイト部には、主として少数民族の使用文字が割り当てられているため、定義済みのコードポイントが少ない。
・通常のテキスト（文章）の場合、同じ種類の文字が連続して出現する確率が高い（例えば、テキストのある位置でチベット文字が出現した場合、次の文字もチベット文字である確率が高い）。
【００１８】
本実施形態では、上記のバイト列の偏りに基づき、ＧＢ１８０３０の４バイト部に割り当てられている文字に対する種別表（以下、文字種別表）を用いて、４バイトの文字コードに対する文字境界の特定を行う。文字種別表の詳細については後述する。
【００１９】
図１は、本実施形態のＧＢ１８０３０の文字コード列に対する文字境界特定方法を実行するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図１に示すコンピュータ装置は、演算手段であるＣＰＵ（Central Processing Unit：中央処理装置）１０１と、Ｍ／Ｂ（マザーボード）チップセット１０２およびＣＰＵバスを介してＣＰＵ１０１に接続されたメインメモリ１０３と、同じくＭ／Ｂチップセット１０２およびＡＧＰ（Accelerated Graphics Port）を介してＣＰＵ１０１に接続されたビデオカード１０４と、ＰＣＩ（Peripheral Component Interconnect）バスを介してＭ／Ｂチップセット１０２に接続された磁気ディスク装置（ＨＤＤ）１０５、ネットワークインターフェイス１０６と、さらにこのＰＣＩバスからブリッジ回路１０７およびＩＳＡ（Industry Standard Architecture）バスなどの低速なバスを介してＭ／Ｂチップセット１０２に接続されたフロッピー（登録商標）ディスクドライブ１０８およびキーボード／マウス１０９とを備える。
【００２０】
なお、図１は本実施形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード１０４を設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０１にてイメージデータを処理する構成としても良いし、外部記憶装置として、ＡＴＡ（AT Attachment）やＳＣＳＩ（Small Computer System Interface）などのインターフェイスを介してＣＤ−Ｒ（Compact Disc Recordable）やＤＶＤ−ＲＡＭ（Digital Versatile Disc Random Access Memory）のドライブを設けても良い。
また、本発明によるＧＢ１８０３０のデータ処理方法は、図１に示すようなコンピュータ装置の他、ＰＤＡや携帯電話などの、テキストデータの入出力や編集といった作業を行う情報機器全般に適用することができるのは言うまでもない。
【００２１】
図２は、図１に示すようなコンピュータにより本実施形態の文字境界特定方法を実現するための機能ブロックを示す図である。
図２に示す情報処理装置は、ＧＢ１８０３０の文字コードを用いたテキストデータの処理を行うアプリケーション１０と、アプリケーション１０によるデータ処理を支援して文字コードに対する処理を実行する文字コード処理部２０と、文字コード処理部２０による処理において呼び出され、処理対象である文字コード列に対して文字境界の特定を行う文字境界特定処理部３０と、文字境界特定処理部３０の処理に用いられる文字種別表４０とを備える。
【００２２】
図２において、アプリケーション１０は、例えば図１のプログラム制御されたＣＰＵ１０１にて実現され、テキストの表示や入力を行う各種のソフトウェアによるプロセスが該当する。このソフトウェアとしては、ワードプロセッサやエディタ、データベース、ワークシート、ウェブブラウザ等、ユーザインターフェイスを介してテキストによる入出力が行われるあらゆるソフトウェアが対象となり得る。
【００２３】
文字コード処理部２０は、例えば図１のプログラム制御されたＣＰＵ１０１にて実現され、アプリケーション１０の処理における文字コードに関する処理（文字の特定等）を実行する。そして、処理対象である文字コード列に対して文字境界の特定（すなわち個々の文字コードの特定）を行う必要がある場合に、文字境界特定処理部３０を呼び出し、当該文字コード列と文字境界を特定すべき位置の情報とを渡して、処理を実行させる。
文字コード処理部２０の実装形態としては、入力変換システム（米国マイクロソフト社のＷｉｎｄｏｗｓ用のＩＭＥ（Input Method Editor）等）やテキスト検索を行う検索エンジンの機能として実装される他、オペレーティングシステムやアプリケーション１０を実現するソフトウェアの機能として実装することができる。
【００２４】
文字境界特定処理部３０は、例えば図１のプログラム制御されたＣＰＵ１０１にて実現され、文字コード処理部２０のサブモジュールとして実装される。そして、文字コード処理部２０による処理において、処理対象である文字コード列に対して文字境界を特定する必要がある場合に呼び出され、処理対象の文字列と文字境界を特定すべき位置の情報とを文字コード処理部２０から取得して、文字境界の特定処理を行う。この処理の詳細については後述する。
文字境界特定処理部３０が文字コード処理部２０から呼び出される場合、すなわち文字列における所定の位置の文字境界を特定する必要がある具体的な場合としては、例えば、コンピュータ装置がインターネット等を介して取得したテキストデータを表示する（文字コード列から文字列を生成して表示する）場合、テキスト検索用のインデックス画面を作成する場合、文字列の途中からテキスト検索を行う場合などがある。
【００２５】
文字種別表４０は、ＧＢ１８０３０において扱われる文字の種類（以下、文字種）と各文字種が割り当てられている文字コードの範囲とを対応付けたテーブルであり、例えば図１に示したメインメモリ１０３や磁気ディスク装置１０５等の記憶装置にて実現される文字種別表格納部に格納されている。
図３は、文字種別表４０の構成例を示す図である。
図示のように、ＧＢ１８０３０の４バイト部に割り当てられた各文字種に関して、その文字種が割り当てられているＧＢ１８０３０の範囲が登録されている。なお、図３に提示された各文字種の字数および定義済みアドレスは、実装のための参考例に過ぎない。実際には、ＧＢ１８０３０やその参照元であるUnicodeが改定されると、各文字種における値が変わる可能性がある。したがって、文字種別表４０の具体的なデータとしては、本実施形態を実装したシステムの利用時における最新の規格表から得られる、その時点での正しい値を用いる必要がある。
【００２６】
図４は、本実施形態の文字境界特定処理部３０による文字境界の特定処理の流れを説明するフローチャートである。
文字境界特定処理部３０は、文字コード処理部２０からの呼び出しに応じて、処理対象である文字コード列の指定された位置に対して文字境界の特定を行う。本動作では、文字境界を特定するための前提として、ＧＢ１８０３０の文字コードを、次の４つのグループに分類する。すなわち、
Ｗ群（0x00-0x2F,0x3A-0x3F,0x7F,0x80,0xFF）：常に１バイト
Ｘ群（0x40-0x7E）：１バイト文字か、２バイト文字の２バイト目
Ｙ群（0x81-0xFE）：２バイト文字の１、２バイトか、４バイト文字の１、３バイト
Ｚ群（0x30-0x39）：１バイト文字か、４バイト文字の２、４バイト
また、本実施形態による文字境界の特定処理では、上述した「同じ種類の文字が連続して出現する確率が高い」というバイト列の偏りを利用して判断を行う。
【００２７】
図４を参照すると、文字境界特定処理部３０は、処理対象である文字コード列の所望の位置（文字コード処理部２０によって指定された位置）に対して、まず１バイトのデータの切り出しを行う（ステップ４０１）。そして、切り出された１バイトのデータに対して、当該データが上述したＷ群またはＸ群に該当するか否かを判断する（ステップ４０２）。ここで、この１バイトのデータがＷ群またはＸ群に該当するならば、当該データは１バイト文字または２バイト文字の２バイト目であるので、そのデータの直後で文字境界を特定し、処理を終了する（ステップ４０８）。
【００２８】
ステップ４０１で切り出された１バイトのデータがＷ群にもＸ群にも該当しない場合（すなわちＹ群またはＺ群である場合）、次に文字境界特定処理部３０は、当該１バイトを含む２バイトのデータの切り出しを行う（ステップ４０３）。この場合、ステップ４０１で最初に切り出された１バイトの直前の１バイトを含む２バイトのデータが切り出される。したがって、切り出される２バイトのデータは、ＷＹ、ＷＺ、ＸＹ、ＸＺ、ＹＹ、ＹＺ、ＺＹ、ＺＺのいずれかである。
【００２９】
そして文字境界特定処理部３０は、切り出された２バイトのデータに対して、当該データが上述したグループにおけるＷＹ、ＷＺ、ＸＹ、ＸＺ、ＺＺのいずれかに該当するか否かを判断する（ステップ４０４）。ここで、この２バイトのデータが上述したグループにおけるＷＹ、ＷＺ、ＸＹ、ＸＺ、ＺＺのいずれかであるならば、バイト列の偏りを考慮して、次のことが言える。すなわち、
・ＷＹ、ＷＺの場合、１バイト目のデータが１バイト文字（Ｗ群）なので、２バイト目のデータ（Ｙ、Ｚ）は１バイト文字である。
・ＸＹ、ＸＺの場合、１バイト目のデータが１バイト文字または２バイト文字の２バイト目（Ｘ群）なので、２バイト目のデータ（Ｙ、Ｚ）は１バイト文字または２バイト文字の１バイト目である。
・ＺＺの場合、Ｚ群は１バイト文字または４バイト文字の２バイト目または４バイト目であるので、ＺＺと並ぶのは、２バイトのデータがいずれも１バイト文字である場合に限られる。
以上のことから、ステップ４０３で切り出された２バイトのデータが上述したグループにおけるＷＹ、ＷＺ、ＸＹ、ＸＺ、ＺＺのいずれかであるならば、文字境界特定処理部３０は、その２バイトのデータの間（すなわちステップ４０１で最初に切り出された１バイトのデータの直前）で文字境界を特定し、処理を終了する（ステップ４０８）。
【００３０】
ステップ４０３で切り出された２バイトのデータが上記の組合せのいずれにも該当しない場合、次に文字境界特定処理部３０は、当該２バイトのデータが上述したグループにおけるＹＹに該当するか否かを判断する（ステップ４０５）。ここで、この２バイトのデータが上述したグループにおけるＹＹに該当するならば、切り出されたデータに基づく文字境界の特定を行わず、文字列の先頭から順次、文字境界の特定を行う（ステップ４０９）。これは、切り出された２バイトの文字列がＹＹである場合として、バイト列の偏りを考慮すると、当該データが２バイト文字に対応する場合と、１バイト目のデータが２バイト文字の２バイト目であり２バイト目のデータが他の２バイト文字の１バイト目である場合とが考えられ、文字境界の特定ができないためである。
【００３１】
これに対し、ステップ４０３で切り出された２バイトのデータが上記のグループにおけるＹＹにも該当しない場合（すなわちＹＺまたはＺＹである場合）、この２バイトのデータは４バイト文字の一部である可能性があるので、次に文字境界特定処理部３０は、当該２バイトのデータに関して、文字種別表４０との照合を行う（ステップ４０６）。そして、当該データが１つの４バイト文字に対応する場合は、その照合結果にしたがって文字境界を特定し、処理を終了する（ステップ４０７、４０８）。
【００３２】
ここで、文字種別表４０との照合および文字境界の判断について具体的に説明する。
上述した文字コードのグループ分けから、４バイト文字の文字コードにはＹ群とＺ群とが交互に現れることとなる。各群に添え字を付けてＹｎ、Ｚｎ（ｎ＝１、２、３、・・・）というように表現すると、４バイト文字の文字コードは［Ｙ1,Ｚ1,Ｙ2,Ｚ2］などと表される。そこで、
文字コード列Ｓ：Ｙ1,Ｚ1,Ｙ2,Ｚ2,Ｙ3,Ｚ3,Ｙ4,Ｚ4,Ｙ5,Ｚ5,Ｙ6,Ｚ6,Ｙ7,Ｚ7,・・・
を想定し、２バイトのデータＹ3Ｚ3に関して、文字種別表４０との照合を行う場合を考える。
【００３３】
このとき、あり得る文字コードの並びは、次の２種類である。
Ｓ１：[Ｙ1,Ｚ1,Ｙ2,Ｚ2],[Ｙ3,Ｚ3,Ｙ4,Ｚ4],[Ｙ5,Ｚ5,Ｙ6,Ｚ6],[・・・
Ｓ２：[Ｙ2,Ｚ2,Ｙ3,Ｚ3],[Ｙ4,Ｚ4,Ｙ5,Ｚ5],[Ｙ6,Ｚ6,Ｙ7,Ｚ7],[・・・
すなわち、データＹ3Ｚ3が４バイト文字における前２バイトの場合と、後ろ２バイトの場合である。文字境界特定処理部３０は、文字コード列Ｓを、仮に上記のＳ１、Ｓ２のように区切り、それぞれを文字種別表４０と照合する。
【００３４】
そして、文字種別表４０に文字コード［Ｙ3,Ｚ3,Ｙ4,Ｚ4］が登録されており、文字コード［Ｙ2,Ｚ2,Ｙ3,Ｚ3］が登録されていないならば、Ｓ１の区分が正解であると判断され、２バイトのデータＹ3Ｚ3の直前で文字境界が特定されることとなる。
一方、文字種別表４０に文字コード［Ｙ3,Ｚ3,Ｙ4,Ｚ4］が登録されておらず、文字コード［Ｙ2,Ｚ2,Ｙ3,Ｚ3］が登録されているならば、Ｓ２の区分が正解であると判断され、２バイトのデータＹ3Ｚ3の直後で文字境界が特定されることとなる。
【００３５】
ＧＢ１８０３０の４バイト部は、文字コードの充填率が低い（すなわち、定義済みのコードポイントが少ない）ため、文字コード列中から任意のデータＹ3Ｚ3を取り出した場合に、文字コード［Ｙ3,Ｚ3,Ｙ4,Ｚ4］、［Ｙ2,Ｚ2,Ｙ3,Ｚ3］がいずれも存在するということがほとんどない（チベット文字やモンゴル文字では０パーセント、ウィグル文字やイ文字で数パーセント）。そのため、上記のような区分候補Ｓ１、Ｓ２を想定すれば、ほとんどの場合、一方のみが正解となり、文字境界を特定することが可能となる。
【００３６】
同様にして、ステップ４０３で切り出された２バイトのデータがＺ3Ｙ4である場合は、文字種別表４０に、文字コード［Ｙ3,Ｚ3,Ｙ4,Ｚ4］が登録されている（Ｓ１の場合）か、または文字コード［Ｙ2,Ｚ2,Ｙ3,Ｚ3],[Ｙ4,Ｚ4,Ｙ5,Ｚ5］が登録されている（Ｓ２の場合）かを判断することによって、文字境界を特定することができる。
【００３７】
上記のように２バイトのデータを文字種別表４０と照合した結果、文字境界を特定できない場合は、切り出されたデータに基づく文字境界の特定を行わず、文字列の先頭から順次、文字境界の特定を行う（ステップ４０９）。ここで、文字境界を特定できない場合としては、上記の具体例でＳ１、Ｓ２のいずれもが成立する場合（例えば、文字コード［Ｙ3,Ｚ3,Ｙ4,Ｚ4］、［Ｙ2,Ｚ2,Ｙ3,Ｚ3］がいずれも文字種別表４０に登録されている場合）と、いずれも成立しない場合とがある。Ｓ１、Ｓ２のいずれもが成立しない場合は、１バイト文字、２バイト文字および４バイト文字が混在している可能性を否定できないので、文字列の先頭に戻って文字境界を逐次特定することとする。
【００３８】
以上のように、本実施形態では、ＧＢ１８０３０の文字コード列に対して所定の位置の文字境界を特定したい場合であって、その文字境界を特定すべき位置にあるデータがＧＢ１８０３０の４バイト部の文字コードに含まれる場合に、そのデータと文字種別表とを照合することによって当該データが含まれる文字コードを判別し、文字コード列における文字境界を特定することができる。したがって、文字種別表との照合による判別で文字境界を特定できなかった場合にのみ、文字列の先頭から文字境界の特定を順次行って、所望の位置の文字境界を特定すれば良い。これにより、本実施形態は、文字境界の特定処理の高速化を図り、コンピュータにおけるテキスト処理全体の実行効率を向上させることが可能となる。
【図面の簡単な説明】
【００３９】
【図１】本実施形態のＧＢ１８０３０の文字コード列に対する文字境界特定方法を実行するのに好適なコンピュータ装置のハードウェア構成を模式的に示した図である。
【図２】本実施形態の文字境界特定方法を実現するための機能ブロックを示す図である。
【図３】本実施形態で用いられる文字種別表の構成例を示す図である。
【図４】本実施形態の文字境界特定処理部による文字境界の特定処理の流れを説明するフローチャートである。
【図５】ＧＢ１８０３０における文字と文字コードの対応例を示す図である。
【図６】ＧＢ１８０３０における文字と文字コードの他の対応例を示す図である。
【符号の説明】
【００４０】
１０…アプリケーション、２０…文字コード処理部、３０…文字境界特定処理部、４０…文字種別表、１０１…ＣＰＵ（Central Processing Unit：中央処理装置）、１０３…メインメモリ、１０５…磁気ディスク装置（ＨＤＤ）
【図１】
2005250729.tif 000003
【図２】
2005250729.tif 000004
【図３】
2005250729.tif 000005
【図４】
2005250729.tif 000006
【図５】
2005250729.tif 000007
【図６】
2005250729.tif 000008