Как работает System.Globalization.CultureInfo.InvariantCulture ?

  • Автор темы Автор темы Art4D
  • Дата начала Дата начала

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Реакции
48
Баллы
28
Объясните как работает System.Globalization.CultureInfo.InvariantCulture
Вот например у нас есть две переменные, одна записана через "," вторая через ".", почему в первой переменной удаляет ",", разве не должно возвращаться "128,22" ?
PHP:
Развернуть Свернуть Копировать
string a = "128,22";
double b = Convert.ToDouble(a, System.Globalization.CultureInfo.InvariantCulture);
string c = "128.22";
double d = Convert.ToDouble(c, System.Globalization.CultureInfo.InvariantCulture);
return b+"|"+d;
Возвращает:
PHP:
Развернуть Свернуть Копировать
12822|128,22
 
Обьясните, пожалуйста :bc:
 
Такая же проблема. Есть ряд действий, которые отрабатывают удачно на русской сборке ZP, но на английской не распознает формат даты, съедает целые числа перед запятой или вообще запятую/точку отсекает в обрабатываемых переменных.

Причем в PM работает нормально, только в ZP начинаются эти сбои. Как исправить?

85491
 
Вам необходимо делать универсальный парсинг (в .Net это надо делать явно):

т.е. даже при InvariantCulture необходим универсальный парсинг, если вид данных может меняться.

Самому InvariantCulture нет смысла ставить, он теперь уже долгое время по умолчанию:

1636988469945.png
 
Последнее редактирование:
  • Оценить
Реакции: fridayman
Вам необходимо делать универсальный парсинг (в .Net это надо делать явно):

т.е. даже при InvariantCulture необходим универсальный парсинг, если вид данных может меняться.

Самому InvariantCulture нет смысла ставить, он теперь уже долгое время по умолчанию:

Посмотреть вложение 85508


К сожалению, это не подходит. Код становится очень черезчур громоздким, если везде пробовать определять культуру. На данный момент я развернул на сервачке демо-версию зенки на английском и наблюдаю эти глюки уже в самом PM. Буду искать вариант определить по умолчанию культуру через общий код. Если есть полезные ссылки, буду рад.)
 
К сожалению, это не подходит. Код становится очень черезчур громоздким, если везде пробовать определять культуру. На данный момент я развернул на сервачке демо-версию зенки на английском и наблюдаю эти глюки уже в самом PM. Буду искать вариант определить по умолчанию культуру через общий код. Если есть полезные ссылки, буду рад.)
Так не дублируйте его, вынесите в общий код.
 
Так не дублируйте его, вынесите в общий код.

C#:
Развернуть Свернуть Копировать
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("ru-RU");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;

вот такое подходит, но я не умею выносить в общий код. Подскажете?)
 
C#:
Развернуть Свернуть Копировать
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("ru-RU");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;

вот такое подходит, но я не умею выносить в общий код. Подскажете?)
Это достаточно выполнить в начале шаблона, но это не поможет, если данные всё так же могут меняться (как у ТС).
CurrentUICulture лучше не трогать.
 
Это достаточно выполнить в начале шаблона, но это не поможет, если данные всё так же могут меняться (как у ТС).
CurrentUICulture лучше не трогать.

А нельзя поставить для шаблона культуру языка по умолчанию ru-RU? Я установил рядом с проплаченной русской версией ЗП демку на английском. После этого и обе перестали нормально читать шаб. Там что-то смешалось, так не пойдет. Могу закостылить попробовать, но не думаю, что оно того стоит. Вопрос так и не смог решить пока что.
 
А нельзя поставить для шаблона культуру языка по умолчанию ru-RU?
Так вы же сами приложили сниппет для этого.
Я установил рядом с проплаченной русской версией ЗП демку на английском. После этого и обе перестали нормально читать шаб. Там что-то смешалось, так не пойдет.
Необходим минимальный пример.
 
  • Оценить
Реакции: fridayman

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)