Ответ 1
Нет никаких спецификаций для файлов INI, но для того, что стоит, я расскажу о поведении нескольких реализаций на языках, которые я знаю.
Встроенный модуль configparser
Python предлагает getboolean
, который ведет себя следующим образом:
принятые значения...
'1'
,'yes'
,'true'
и'on'
, которые заставляют этот метод возвращатьTrue
и'0'
,'no'
,'false'
, и'off'
, которые заставляют его возвращатьFalse
.
В PHP parse_init_file
, с другой стороны:
Значения строк "true", "on" и "yes" преобразуются в TRUE. "false", "off", "no" и "none" считаются FALSE.
В то же время .NET не имеет встроенной поддержки анализа INI, но его наиболее популярная библиотека INI-анализа, ini-parser, не предлагает никакой поддержки для автоматического анализа значений и возвращает их все строки. Его Приступая к работе примеры показывают разбор булевых файлов с помощью .NET Boolean.Parse
, который примет строки "true"
и "false"
(с любой капитализацией) и выдаст исключение, если дано что-то еще.
Вкратце: нет абсолютно никакой согласованности в этом вопросе между различными реализациями парсеров INI.
Я бы порекомендовал:
- Если вы только проанализируете свой INI, используя один синтаксический анализатор, проверьте, как ведет себя этот парсер, и создайте свой INI в соответствии с его конкретной реализацией.
- Если вам нужно поддерживать широкий диапазон парсеров (например, для взаимодействия языков), то либо полностью отказаться от INI, либо полностью исключить использование каких-либо магических логических значений, которые понимают некоторые парсеры, и вместо этого придерживаться
1
и0
.