2

C言語を使って言語識別プログラムをやろうと思っています。私はすでにインターネットで検索し、N-Gram-Based Text Categorization の記事を見つけました。また、プログラミングのニーズの一部を処理するための独自のユーティリティ セットも作成しました。さて、まずはひらがな、カタカナ、漢字で書かれた日本語を出力する簡単なプログラムを作ってみたいと思います。これは C 言語で実行できると信じていましたが、実装方法がわかりません。これは Unicode プログラミングに関連している可能性があります。最初に何を学ぶ必要があるか、#include する必要があるライブラリ、またはこのプログラムを実行および実装するための基礎として使用できるユーティリティを説明してくれる人はいますか?

4

1 に答える 1

0

C がこのプロジェクトに最適な選択だとは思いません。IMOは、いくつかの驚異的な組み込みサポートを備えた高レベル言語(C#など)の使用を検討する必要があります。簡単な例です。

C#:

byte[] buffer = new byte[] { 0xE8, 0x82, 0xB2, 0xE5, 0x84, 0xBF }; 
string s = Encoding.UTF8.GetString(buffer);

ブーム。終わり。

C では、私の知る限り、単純な標準のエンコード/デコード ライブラリやユーティリティはありません。このようなものを手動で作成する必要があります。私はある時点で自分でそれを始めましたが、それは時間の無駄であることに気付きました. :)

C に固執する場合は、さまざまな種類のエンコーディング (マルチバイト/ワイドバイト エンコーディング) に関するすべてを読むことから始めることをお勧めします。Web には、開始するためのUnicodeに関する優れたチュートリアルがたくさんあります(これは私が使用した優れたチュートリアルです)。

編集:OK、C#がない場合は、Cで「短い」例を見てみましょう...これも、エンコーディングについて何か知っていることを前提としています(ワイド文字の使用に注意してください:wchar_t):

#include <stdio.h>  
#include <stdlib.h>
#pragma import(__use_utf8_ctype)
#include <wchar.h>
#include <locale.h>

int main(int argc, char *argv[]) 
{
  wchar_t water = 27750;
  setlocale(LC_ALL, "");

  printf("%lc",water);
  return 0;
}

mike@linux-4puc:~> ./a.out 
汦

それは中国語です...同じ漢字だと思いますが、私は日本語が得意ではありません...印刷する方法があります。保存は同様に機能し、wchar_tに保存してから比較を行います。

于 2012-09-12T14:15:30.683 に答える