= Сообщение: 3509 из 3632 ======================================== RU.GOLDED = От : Stas Mishchenkov 2:460/5858 16 Mar 24 11:46:20 Кому : Vitaliy Aksyonov 16 Mar 24 11:46:20 Тема : В консольном режиме Linux даже при выборе кодировки UTF-8 вместо ки FGHI : area://RU.GOLDED?msgid=2:460/5858+65f55d7c На : area://RU.GOLDED?msgid=1:104/117+65f4f7c1 = Кодировка сообщения определена как: CP866 ================================== ============================================================================== Hi Vitaliy!
15 Mar 24 19:23, Vitaliy Aksyonov -> Stas Mishchenkov:
VA>>>>> Попробуй так: setlocale(LC_CTYPE, ""); SM>>>> Та же фигня, только в левой руке.
VA> Может это прикол перла?
Возможно, у меня какой-то не такой POSIX/locale.h
VA> Попробуй накропать простенькую программу на голом VA> си и посмотри, что выдаст.
У меня под виндой нечем собрать. Совсем. У тебя ж есть бинарь? Кинь аттачем, плиз.
VA>>> Этот вариант как раз меняет локаль с "C" на то, что настроено в VA>>> системе. Почему оно у тебя возвращает "C", это вопрос. SM>> Пробовал заслать \x00 - ваще тишину возвращает.
VA> Венда, она вообще странная.
Ага.
VA>>> Я не перлом пробовал правда, но не думаю, что есть какая-то VA>>> разница, ведь перл тупо вызывает ту же системную функцию.
SM>> Вот именно. Тот же POSIX locale_h. Запустил для чистоты эксперимента SM>> голый cmd.exe. Вот результат:
SM>> Microsoft Windows [Version 10.0.19045.4170] SM>> (c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
SM>> D:\Fido\inbound>1_locale.pl SM>> C SM>> C
VA> У меня программа на c выдаёт English_United States.1251
VA> Я тут накопал, почему когда локаль "неправильная" спеллчекер не VA> срабатывает. В смысле, пропускает русские слова. Из-за того, как там VA> строка на слова разбивается. Словом считается то, что состоит из букв, VA> цифр и символов "-'."
VA> Причём определяется что символ - это буква вот таким мега алгоритмом: VA> ==== VA> int isxalnum(int c) VA> { VA> return isascii(c) ? isalnum(c) : (c != g_tolower(c)) || (c != VA> g_toupper(c)); } VA> ====
VA> to_lower/to_upper не будут работать корректно для русских букв в "чужой" VA> локали.
VA> Вот и получается, что словарь загружен, но русские слова в него не VA> попадают. И дед просто их все считает правильнымию
VA> В целом алгоритм имеет право на жизнь, но мне кажется, проще было бы VA> просто разрезать текст по пробелам/табам.
Тоже не вариант. Я сталкивался с ошибочным разбиением именно в маздайке, кстати.