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

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
 

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Обьясните, пожалуйста :bc:
 

fridayman

Client
Регистрация
25.03.2018
Сообщения
169
Благодарностей
259
Баллы
63
Такая же проблема. Есть ряд действий, которые отрабатывают удачно на русской сборке ZP, но на английской не распознает формат даты, съедает целые числа перед запятой или вообще запятую/точку отсекает в обрабатываемых переменных.

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

85491
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 376
Благодарностей
3 301
Баллы
113
Вам необходимо делать универсальный парсинг (в .Net это надо делать явно):

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

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

1636988469945.png
 
Последнее редактирование:
  • Спасибо
Реакции: fridayman

fridayman

Client
Регистрация
25.03.2018
Сообщения
169
Благодарностей
259
Баллы
63
Вам необходимо делать универсальный парсинг (в .Net это надо делать явно):

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

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

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

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 376
Благодарностей
3 301
Баллы
113
К сожалению, это не подходит. Код становится очень черезчур громоздким, если везде пробовать определять культуру. На данный момент я развернул на сервачке демо-версию зенки на английском и наблюдаю эти глюки уже в самом PM. Буду искать вариант определить по умолчанию культуру через общий код. Если есть полезные ссылки, буду рад.)
Так не дублируйте его, вынесите в общий код.
 

fridayman

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 376
Благодарностей
3 301
Баллы
113
C#:
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("ru-RU");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
вот такое подходит, но я не умею выносить в общий код. Подскажете?)
Это достаточно выполнить в начале шаблона, но это не поможет, если данные всё так же могут меняться (как у ТС).
CurrentUICulture лучше не трогать.
 

fridayman

Client
Регистрация
25.03.2018
Сообщения
169
Благодарностей
259
Баллы
63
Это достаточно выполнить в начале шаблона, но это не поможет, если данные всё так же могут меняться (как у ТС).
CurrentUICulture лучше не трогать.
А нельзя поставить для шаблона культуру языка по умолчанию ru-RU? Я установил рядом с проплаченной русской версией ЗП демку на английском. После этого и обе перестали нормально читать шаб. Там что-то смешалось, так не пойдет. Могу закостылить попробовать, но не думаю, что оно того стоит. Вопрос так и не смог решить пока что.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 376
Благодарностей
3 301
Баллы
113
А нельзя поставить для шаблона культуру языка по умолчанию ru-RU?
Так вы же сами приложили сниппет для этого.
Я установил рядом с проплаченной русской версией ЗП демку на английском. После этого и обе перестали нормально читать шаб. Там что-то смешалось, так не пойдет.
Необходим минимальный пример.
 
  • Спасибо
Реакции: fridayman

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