2

Windows のシングル バイト コード ページの 1 つでエンコードされることがわかっている「テキスト」ファイル用のパーサーを作成しようとしています。これらのファイルには、基本的なデータ型のテキスト表現が含まれており、控えめに言っても、これらの表現について私が持っている仕様には欠けています。

Windows-874 では、末尾近くTHAI DIGIT ZEROTHAI DIGIT NINE.

私はこのパーサーをかなり堅牢に書こうとしていますが、これらのデータ ファイルを生成できるさまざまなプログラムがあり、ソースにアクセスできないため、少し暗がりで作業しています。

私が知りたいのは、Microsoft C++ ライブラリの関数は、実数データ型を非アラビア数字std::stringを含むor char const *(つまり、シリアライゼーション) に変換しますか?

私はMicrosoft C++ライブラリを使用していないので、特に参照することはできませんが、作成された例はchar const * IntegerFunctions::ToString(int i).

4

2 に答える 2

1

これらの数字は、Microsoft ライブラリによって作成される可能性があります。プロパティLOCALE_IDIGITSUBSTITUTIONLOCALE_SNATIVEDIGITSOS によってフォーマットされた数値がネイティブ (つまり、非 ASCII) 数字を使用するかどうかを決定します。これは、Windows が内部的に文字列を作成する方法であるため、最初は Unicode です。タイ語のロケールがあり、Unicode を CP874 に変換すると、それらの文字が保持されます。

この動作を示す簡単な関数は次のとおりです。GetNumberFormatA

于 2012-01-20T14:38:04.537 に答える
1

逆の答えのようなものですが、このページは、Microsoft のランタイム ライブラリが、やりたいことを実行するとき、つまり文字列を数値に解析するときに、かなりの数の (ただしすべてではない) 非ラテン数字を理解することを示しているようです。

タイ語が含まれていることから、カスタム コードでもタイ語をサポートすることをお勧めします。

ここにさらに情報を含めるために、リンク先のページには、Microsoft のmsvcr100ランタイムが次の文字セットからの数字のデコードをサポートしていると記載されています。

  • アスキー
  • アラビア語 - インド語
  • 拡張アラビア語
  • デーバナーガリー語
  • ベンガル語
  • グルムキー
  • グジャラート語
  • おりや
  • テルグ語
  • カンナダ語
  • マラヤーラム語
  • タイ語
  • ラオ語
  • チベット語
  • ミャンマー
  • クメール語
  • モンゴル語
  • 全幅

ページ全体には、より多くのプログラミング環境と言語が含まれています (ネガティブな点もたくさんあります)。

于 2012-01-20T11:40:09.117 に答える