Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сортировка строк и юникод. Подскажите как с этим жить / 14 сообщений из 14, страница 1 из 1
27.01.2017, 20:04
    #39393443
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
С юникодом мало знаком, поэтому наступаю периодически на грабли. Кому интересно тут предыдущие .

Сегодня грабли такие:
Код: c#
1.
2.
3.
Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU", false);
var a = new List<String> {"ИГРА", "ИРА", "ЙОГА"};
a.Sort();


Результат
Код: c#
1.
2.
3.
ИГРА
ЙОГА
ИРА


Пробую так
Код: c#
1.
a.Sort(StringComparer.Create(new CultureInfo("ru-RU", false), true));


Ничего не поменялось, "ru-RU" наверно какую-то Руанду обозначает.

Теперь так
Код: c#
1.
a.Sort(StringComparer.OrdinalIgnoreCase);


Ура !!! Бинго !!! И != Й
Код: c#
1.
2.
3.
ИГРА
ИРА
ЙОГА



А еще есть LINQ с OrderBy, компараторы и т.д. и т.п. Капец вобщем.

Подскажите как правильно со всем этим бороться или что почитать по этому поводу.
Есть какие-то подходы как это нормализовать и со всем этим уживаться в C#?
...
Рейтинг: 0 / 0
27.01.2017, 20:22
    #39393450
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Dima T,

Й в юникоде это И к которому приписали U+000306 COMBINING BREVE
...
Рейтинг: 0 / 0
27.01.2017, 20:24
    #39393451
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Dima T,

в MSSQL - ещё хуже - там "-" при сортировке отличной от двоичной игнорируется
...
Рейтинг: 0 / 0
27.01.2017, 20:28
    #39393454
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
ИзопропилЙ в юникоде это И к которому приписали U+000306 COMBINING BREVE
Это я и сам догадался, только от этого легче не становится.
...
Рейтинг: 0 / 0
27.01.2017, 20:33
    #39393460
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Dima T,

либо забить(что обычно делается), либо свой компаратор таскать.
...
Рейтинг: 0 / 0
27.01.2017, 20:35
    #39393464
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Изопропилв MSSQL - ещё хуже - там "-" при сортировке отличной от двоичной игнорируется
В курсе, по ссылке моей сходи, там оно самое, пытался в один проход сравнить две сортированные выборки из MySQL и MSSQL отсортированные по строковому ключу. Тут такая же хрень 19691225

Там я порешал 19690303 , к запросу приписка и готово. А тут как быть?
...
Рейтинг: 0 / 0
27.01.2017, 20:46
    #39393473
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Изопропиллибо забить(что обычно делается), либо свой компаратор таскать.
Забить можно если ты в пределах экосистемы от MS где все одинаково (хотя MS FoxPro оттуда же, но там не юникод). У не MS по другому .

Хочется чтоб было нормально, как везде. Т.к. разные сортировки создают проблемы в работе с сортированными данными из разных источников.
"свой компаратор" это что? дай ссылку.
StringComparer.OrdinalIgnoreCase вроде правильно сортирует, но я уже ни в чем не уверен.
...
Рейтинг: 0 / 0
27.01.2017, 21:06
    #39393495
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Dima TХочется чтоб было нормально, как везде
не будет - мир не совершенен.
...
Рейтинг: 0 / 0
27.01.2017, 21:16
    #39393509
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
ИзопропилDima TХочется чтоб было нормально, как везде
не будет - мир не совершенен.
"мир" != "MS"
...
Рейтинг: 0 / 0
27.01.2017, 21:56
    #39393532
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Dima TИзопропилпропущено...

не будет - мир не совершенен.
"мир" != "MS" а мс то каким боком — это проблемы юникода
И я не уверен, что сделал бы лучше
А тараканы не только с кириллицей, с латиницей тож есть
...
Рейтинг: 0 / 0
28.01.2017, 06:50
    #39393616
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Изопропилмс то каким боком — это проблемы юникода
С минусом у всех одинаково решено, кроме MS Опрос

С минусом вообще интересно, в сочетании с английскими и русскими он по разному трактуется.
Код: c#
1.
2.
var a = new List<String> {"abc", "aaa", "a-b", "а-а", "ааа", "абв"};
a.Sort();


результат
Код: c#
1.
2.
3.
4.
5.
6.
aaa
a-b
abc
а-а
ааа
абв



Затестил MSSQL - нормально Й сортирует.

Буду пробовать StringComparer.OrdinalIgnoreCase, с ним пока все корректно сортируется.
...
Рейтинг: 0 / 0
28.01.2017, 09:08
    #39393627
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Еще одна забавная табличка
Код: c#
1.
var a = new List<String> {"abc", "aaa", "a-b", "a+b", "a/b"};


a.Sort()a.Sort(StringComparer.OrdinalIgnoreCase)a/ba+ba+ba-baaaa/ba-baaaabcabc
...
Рейтинг: 0 / 0
28.01.2017, 09:49
    #39393634
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Dima T,
Интересно. Надо проверить
...
Рейтинг: 0 / 0
28.01.2017, 10:43
    #39393652
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строк и юникод. Подскажите как с этим жить
Dima TПодскажите как правильно со всем этим бороться или что почитать по этому поводу.
Есть какие-то подходы как это нормализовать и со всем этим уживаться в C#?
Best Practices for Using Strings in the .NET Framework
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сортировка строк и юникод. Подскажите как с этим жить / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]