2

我正在尝试为我知道将在Windows 单字节代码页之一中编码的“文本”文件编写解析器。这些文件包含基本数据类型的文本表示,至少可以说,我缺少这些表示的规范。

我注意到在Windows-874THAI DIGIT ZERO中接近结尾的十个不起眼的小字符称为THAI DIGIT NINE.

我正在尝试将这个解析器编写得非常健壮,但我在黑暗中工作,因为有许多不同的程序可以生成这些数据文件,而我无权访问源代码。

我想知道的是:Microsoft C++ 库中的任何函数是否将实数数据类型转换为包含非阿拉伯数字std::string的或char const *(即序列化)

我不使用 Microsoft C++ 库,因此无法特别引用任何库,但编造的示例可能是char const * IntegerFunctions::ToString(int i).

4

2 回答 2

1

有点相反的答案,但这个页面似乎表明微软的运行时库在做你想做的事情时理解很多(但不是全部)非拉丁数字,即将字符串解析为数字。

包括泰语,这似乎表明在自定义代码中支持它也是一个好主意。

要在此处包含更多信息,链接到的页面指出 Microsoft 的msvcr100运行时支持从以下字符集中解码数字:

  • ASCII
  • 阿拉伯语-印度语
  • 扩展阿拉伯语
  • 梵文
  • 孟加拉
  • 古尔穆基
  • 古吉拉特语
  • 奥里亚语
  • 泰卢固语
  • 卡纳达语
  • 马拉雅拉姆语
  • 泰国
  • 老挝
  • 缅甸
  • 高棉
  • 全屏宽度

整页包括更多的编程环境和更多的语言(也有很多负面的)。

于 2012-01-20T11:40:09.117 回答
1

这些数字当然可以由 Microsoft 库创建。属性LOCALE_IDIGITSUBSTITUTIONLOCALE_SNATIVEDIGITS确定操作系统格式化的数字是否将使用本机(即非 ASCII)数字。这些最初是 Unicode,因为这就是 Windows 在内部创建字符串的方式。当您拥有泰语语言环境并将 Unicode 转换为 CP874 时,这些字符将被保留。

演示此行为的一个简单函数是GetNumberFormatA

于 2012-01-20T14:38:04.537 回答