Локализация с десятичным разделителем
-
21-08-2019 - |
Вопрос
Возможно ли, что .NET использует на сервере A ',' в качестве десятичного разделителя, а на другом сервере B '.'?+ Как вы можете это обнаружить?
При преобразовании строк в двойные значения на сервере А все работает нормально, а вот на сервере Б возникают проблемы.
Пример:
сервер А:20,4 -> 20.4 Сервер B:20,4 --> 204
Нам нужно будет обнаружить это, чтобы на обоих серверах все продолжало работать.
спасибо, Ливен Кардоен
Решение
Похоже, что локаль на одном сервере установлена правильно, а на другом нет.
Есть несколько способов сделать это, но вы можете установить языковой стандарт для текущего потока на странице App/ASP.NET с помощью Thread.CurrentThread.CurrentCulture и Thread.CurrentThread.CurrentUICulture.
Чтобы установить это для всего приложения, вы должны сделать это в своем web.config:
<configuration>
<system.web>
<globalization culture="en-US" uiCulture="en-US" />
...
Другие советы
я использую
String.Format(System.Globalization.CultureInfo.InvariantCulture, ....)
в тех случаях, когда вы не хотите иметь выходные данные, специфичные для культуры.(Например, когда вы записываете сериализуемые данные для других приложений и т. д.) Таким образом, независимо от того, какая культура установлена в данный момент, выходные данные всегда будут одинаковыми.