dBase. Bug report.

oracloid

совсем кукус
dBase. Bug report.

Читаю данные из файла через модуль dBase. Региональные настройки винды влияют на значения типа float. Если в качестве разделителя целой и дробной части в настройках стоит запятая (по умолчанию для Русского), то дробная часть откидывается. Если поставить в качестве разделителя точку, то все данные читаются как положено, с дробной частью.

В мануале ничего не сказано. Там вообще раздел "настройка" пустой.

Мне кажется, это ошибка в модуле dBase.


PHP 5.2.6 (cli)
Windows XP SP2

-----------------------

Кстати, может кто знает, можно ли для текущей сессии командного интерпретатора поменять regional settings? Не хочется менять глобально, ибо мало ли на что это еще повлияет...
 

oracloid

совсем кукус
Спасибо, флоппик!
setlocale(LC_NUMERIC, 'american') помогло!


Но вообще, по-моему, это очень странно....

Внутри dbf-файла для типа поля Number вообще нет никаких разделителей дробной части, задается LENGTH и PRECISION.

http://www.clicketyclick.dk/databases/xbase/format/data_types.html

Number: ASCII text up till 18 characters long (include sign and decimal point). Valid characters: "0" - "9" and "-".



Почему же модуль PHP dBase зависит от разделителей?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Скорее всего не сам модуль, а момент передачи значений из него в скрипт.
 
Сверху