エンコーディングに依存します。最も単純なものは UTF-8 で、文字列をchar*
配列に格納するだけです。驚いたことに、頻度リストの作成は、ASCII テキストの場合とほぼ同じコードを使用して行われます。これは一種の UTF-8 マジックですが、このエンコーディングが非常に強力な理由はここにあります。
この場合、覚えておくべきことがいくつかあります。
Unicode は、ASCII よりも多くの白い文字を提供します。単語がどこで区切られているかを知るには、それらのリストが必要です。幸いなことに、ウィキペディアには.
Unicode は常に明確であるとは限りません。異なるシーケンスが同じ文字を生成する場合があります。通常、合成文字で発生します。たとえば、ドイツ語は次のÄ
ように表されます。
- 文字
U+00C4
- 一文字Ä
- シーケンス
U+0041 U+0308
- ラテン文字A
とその上の分音符号 (ウムラウト)。
幸いなことに、ドイツ語には英語以外の文字が 7 つしかありません: ÄäÖöÜüß
. それらの代替バリアントがどのように見えるかを確認する必要があります (たとえば、この4 ページと 5 ページでは、すべてのドイツ語の文字とその代替フォームを見つける必要があります)。
もちろん、両方の問題を解決するには、すべての調査結果が UTF-8 でどのように表現されるかを知る必要もあります。これについては、RFC 3629の 3 ページで説明されています。
他のエンコーディング (または他の言語) の場合は、自分で処理するのではなく、既存のライブラリを使用することをお勧めします。Linux (または他のほとんどの Unices) を使用している場合は、iconv
関数 ( man 3 iconv
) を使用してテキストを UTF-8 に変換し、前に説明したように進めることができます。
他の選択肢は、さまざまな Unicode バリアントを既に処理しているライブラリを使用することです。最も強力なのはおそらくICU - International Components For Unicodeです。マニュアルを参照して、それを使用してタスクを実行する方法を確認してください。