Используются ли нелатинские цифры в кодовых страницах Windows SBCS какими-либо библиотеками Microsoft для представления числовых данных в C-строках? - PullRequest
2 голосов
/ 20 января 2012

Я пытаюсь написать анализатор для "текстовых" файлов, которые, как я знаю, будут закодированы в одну из однобайтовых кодовых страниц Windows . Эти файлы содержат текстовые представления основных типов данных, и, по меньшей мере, спецификации для этих представлений не хватает.

Я заметил в Windows-874 десять маленьких незаметных символов в конце, называемых THAI DIGIT ZERO до THAI DIGIT NINE.

Я пытаюсь написать этот синтаксический анализатор, чтобы он был достаточно надежным, но я немного работаю в неведении, так как есть много разных программ, которые могут генерировать эти файлы данных, и у меня нет доступа к источникам.

То, что я хочу знать: выполняет ли какие-либо функции в библиотеках Microsoft C ++ преобразование типов данных действительных чисел в std::string или char const * (то есть сериализацию), которые будут содержать не арабские цифры

Я не пользуюсь библиотеками Microsoft C ++, поэтому не могу ссылаться ни на какие, в частности, но готовый пример может быть char const * IntegerFunctions::ToString(int i).

Ответы [ 2 ]

1 голос
/ 20 января 2012

Эти цифры, безусловно, могут быть созданы библиотеками Microsoft.Свойства LOCALE_IDIGITSUBSTITUTION и LOCALE_SNATIVEDIGITS определяют, будут ли числа, отформатированные в ОС, использовать собственные (т. Е. Не ASCII) цифры.Изначально это Unicode, потому что именно так Windows создает строки.Если у вас есть тайский язык и вы конвертируете Unicode в CP874, эти символы будут сохранены.

Простая функция, демонстрирующая это поведение, - GetNumberFormatA

1 голос
/ 20 января 2012

Сортировка обратного ответа, но эта страница , кажется, указывает на то, что библиотеки времени выполнения Microsoft понимают довольно много (но не все) нелатинских чисел при выполнении того, что вы хотите сделать, т.е.строка в число.

Включен тайский язык, что, по-видимому, указывает на то, что было бы неплохо также поддерживать его в пользовательском коде.

Чтобы включить дополнительную информацию здесь, на страницу, на которую ведут ссылкиутверждает, что Microsoft msvcr100 Runtime поддерживает декодирование чисел из следующих наборов символов:

  • ASCII
  • арабский-индик
  • расширенный арабский
  • деванагари
  • Бенгальский
  • Гурмухи
  • Гуджарати
  • Ория
  • Телугу
  • Каннада
  • Малаялам
  • Тайский
  • Лаосский
  • Тибетский
  • Мьянма
  • Кхмерский
  • Монгольский
  • Полная ширина

Полная страница включает больше сред программирования и больше языков (есть много негативов тоже).

...