エンコードチェック

新規で書き直しているエンコードコンバータ処理のうち、今はエンコードチェック部分を作り直しており、マイナーな符号以外の部分は概ね返却値を返すところまで出来ました。


色々考えた結果、符号化方法(CES)に32ビット使い、その中で一意になるように文字集合(CCS)に32ビット使い、合わせて64ビットで完全に一意のCCSを指定できるよう、附番します。
これがまだ途中までなので、上の返却値を返す部分もまだ未完成というわけです。

内部的には、二つのDWORDをまとめたstructとして、これを受け渡します。


日本語をどう判定するか


一般的な日本向けの処理系ならば、シフトJIS/EUC/JISの三つが分かればよい、最近ならUTF-8のBOMも確認、といったところでしょうか。

現在開発中のものは、もちろんBOMも確認しますし、エスケープがあればISO/IEC 2022としての分析もしますが、素のSJIS/EUC-JP/UTF-8Nの分析機能に、力を入れています。

SJISは1~2バイト、EUC-JPは1~3バイト、UTF-8は1~6バイトの可変長であり、何文字あるか?を数えるのは意外に難しい。
しかも各符号で領域の重複があるため、可能性だけで全部数えてしまうと、意図せぬ結果が出てしまう。
しかし、それを数えてそれぞれの符号に重みを付け、最終的に何の符号かを判断するわけです。


硬派一徹


HTMLなどでは、HTTPレベルや、文書中にエンコード名を書いたりするので、Webブラウザはそこから概ねの符号を判断できる。
しかし汎用のエンコードコンバータを目指す以上は、内容には一切関与せず、符号列のみから判断する必要があります。

自ずと限界が出てきますが、現時点でもかなりの性能を発揮しており、これだけで製品として売れそうですが、個人的には不満もあるので、何とか工夫して更に良い判定処理にしていきたい。


半角カナ


専門的に言えば半角という表現は不正確なのですが、まぁ今回はその点には触れないとして、この昔ながらのカナモジです。

シフトJISの半角カナの符号は、EUC-JPのそれと重複しています。
本当はEUC-JPの符号で、EUC-JPとしては「1文字」としてカウントしても、SJIS側で「半角カナ2文字」としてカウントしていたのでは、どう頑張ってもEUC-JPとして判別できない。
少し上に書いたように、可能性だけで全部数えてしまってはだめ、ということになります。

「SJISらしい」符号列が見付かれば、その推定文字数分をカウントする、といった処理にしたいと考えているところですが、まだ目処が立っていません。

このため、現時点では「半角カナしかないSJIS文書」という今時はなかなか無さそうな代物は、残念ながらEUC-JPとして誤判定されてしまう。
個人的に、これがどうしても気に入らないわけです。


将来的には


将来的には、異国の言語についても自動判定する処理が書ければいいなと思っていますが、実現するかどうかは分かりません。
自分は日本語と僅かな英語しか使えませんし、朝鮮語、支那語についても文字コード技術については知識はあれども、その言語自体の知識はあまりない。

東南アジアや南アジアあたりまで行くと、不可思議な文字が様々に使われておりますし、中東に至っては文字には見えないような凄いものが使われています。非常に興味深いところですが、いざ処理するとなると、かなり大変でしょう。

こういった文字に興味関心のある方は、是非ご協力ください。

2008/11/13(木)14:34 |Comments(0) |Trackback(0)

製造開発 | プログラミング | コンピュータ | [編集]

▲ページトップ

コメント

コメントの投稿

符号はTSVで管理する ホーム 文字コードについて
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR