8

それで、私はプレーンC(ANSI 9899:1999)プロジェクトに取り組んでおり、Unicode、UTF-8、およびそのすべてのジャズをどこから始めればよいかを理解しようとしています。

具体的には、これは言語インタープリタープロジェクトであり、Unicodeを処理する必要がある2つの主要な場所があります。ソースファイルの読み取り(言語は表面上はUnicode識別子などをサポートします)と「文字列」オブジェクトです。

Unicode、UTF-7 / 8/16/32、UCS-2 / 4などに関するすべての明白な基本に精通しています…私は主に、有用でC固有の(つまり、お願いします)を探しています。 C ++またはC#はありません。これは、以前にSOでここに文書化されたすべてです)Unicode対応のものを実装するための「次のステップ」に関するリソース…Cで。

リンク、マンページ、ウィキペディアの記事、サンプルコードは、すべて大歓迎です。また、後で遭遇する人のために、元の質問でそのようなリソースのリストを維持しようとします。


4

3 に答える 3

10

International Components for Unicodeは、Unicodeを処理するためのポータブルCライブラリを提供します。ICU4Cのエレベーターピッチは次のとおりです。

CおよびC++言語と多くのオペレーティングシステム環境は、Unicodeおよび標準に準拠したテキスト処理サービスを完全にはサポートしていません。一部のプラットフォームは優れたUnicodeテキスト処理サービスを提供しますが、ポータブルアプリケーションコードはそれらを利用できません。ICU4Cライブラリはこのギャップを埋めます。ICU4Cは、ソフトウェアのグローバリゼーション要件に使用するアプリケーションに、オープンで柔軟性のあるポータブルな基盤を提供します。ICU4Cは、UnicodeやCLDR(Common Locale Data Repository)などの業界標準を厳密に追跡します。

于 2010-02-09T22:07:26.660 に答える
3

GLibにはいくつかのUnicode関数があり、かなり軽量なライブラリです。ICUが提供する機能と同じレベルではありませんが、一部のアプリケーションには十分な場合があります。GLibの他の機能は、ポータブルCプログラムにも適しています。

GTK+はGLibの上に構築されています。GLibは、アプリケーションで一般的に複製される基本的なアルゴリズム言語構造を提供します。このライブラリには、次のような機能があります(このリストは包括的なリストではありません)。

  • オブジェクトと型システム
  • メインループ
  • モジュール(つまりプラグイン)の動的ローディング
  • スレッドのサポート
  • タイマーのサポート
  • メモリアロケータ
  • スレッド化されたキュー(同期および非同期)
  • リスト(シングルリンク、ダブルリンク、ダブルエンド)
  • ハッシュテーブル
  • 配列
  • ツリー(N-aryおよびbinaryバランス)
  • 文字列ユーティリティと文字セット処理
  • 字句スキャナーとXMLパーサー
  • Base64(エンコードとデコード)
于 2010-02-09T22:45:55.110 に答える
0

興味深い質問の1つは、文字列の標準的な内部形式はどうあるべきかということだと思います。(少なくとも私にとって)2つの明白な選択肢は

a)バニラc文字列のutf8 b)符号なしの短い配列のutf16

以前のプロジェクトでは、常にutf-8を選択しました。なぜ ; それはCの世界で最も抵抗の少ない道だからです。インターフェースしているもの(stdio、string.hなど)はすべて正常に機能します。

次は、どのファイル形式かです。ここでの問題は、ユーザーに表示されることです(言語用の唯一のエディターを提供しない限り)。ここで私はあなたが彼らがあなたに与えるものを取り、覗いて推測しようとしなければならないと思います(バイト順マークが役立ちます)

于 2010-02-09T22:24:13.337 に答える