----------------------------------------------------------------------------------
@MSGID: 2:460/5858 65f55d7c
@REPLY: 1:104/117 65f4f7c1
@PID: GED+W64 1.1.5-b20231028
@CHRS: CP866 2
@TZUTC: 0300
@RealName: Brother Rabbit
@TID: hpt/w64-mvcdll 1.9 2023-01-07
Hi Vitaliy!
15 Mar 24 19:23, Vitaliy Aksyonov -> Stas Mishchenkov:
VA>>>>> Попробуй так: setlocale(LC_CTYPE, "");
SM>>>> Та же фигня, только в левой руке.
VA> Может это прикол перла?
Возможно, у меня какой-то не такой POSIX/locale.h
VA> Попробуй накропать простенькую программу на голом
VA> си и посмотри, что выдаст.
VA> -------------
VA> #include
VA> #include
VA> int main()
VA> {
VA> printf("%s", setlocale(LC_ALL, "");
VA> return 0;
VA> }
VA> Что скажет? :)
У меня под виндой нечем собрать. Совсем. У тебя ж есть бинарь?
Кинь аттачем, плиз.
VA>>> Этот вариант как раз меняет локаль с "C" на то, что настроено в
VA>>> системе. Почему оно у тебя возвращает "C", это вопрос.
SM>> Пробовал заслать \0 - ваще тишину возвращает.
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
Хотя в консоли cp866?
SM>> D:\\Fido\\inbound>chcp
SM>> Текущая кодовая страница: 866
VA> Самое интересное, что даже после chcp 866 выдаёт ту же английскую локаль.
http://st.g0x.ru/mustdie.png ;)
SM>> Видимо, виндовс уже не такая уж и позикс совместимая.
VA> Она никогда и не была POSIX совместимой.
Прикинь? ;)
VA>>> Пробовал тот же скрипт ради интереса под линуксом запустить? Что
VA>>> кажет?
SM>> Да. Всё правильно кажет. Я уже здесь писал.
VA> Ну хоть там по-человечески.
А могло быть как-то иначе? ;)
SM>> [fido@brorabbit tests]$ ./1_locale.pl
SM>> ru_RU.IBM866
SM>> [ustasm@brorabbit ~]$ /home/fido/perl/tests/1_locale.pl
SM>> ru_RU.UTF-8
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> просто разрезать текст по пробелам/табам.
Тоже не вариант. Я сталкивался с ошибочным разбиением именно в маздайке, кстати.
Have nice nights.
Stas Mishchenkov.
--- Нa opужейнoм зaвoдe заpплату дают дeнь в день, cекунда в секунду
* Origin: Lame Users Breeding. Simferopol, Crimea. (2:460/5858)
SEEN-BY: 46/49 50/109 104/117 221/6 240/1120 250/25
267/67 301/1 341/66
SEEN-BY: 451/31 452/28 166 455/19 460/16 58 256
1124 5858 461/58 463/68 877
SEEN-BY: 463/1331 466/50 467/4 888 469/15 4500/1
4600/140 4651/777 5000/111
SEEN-BY: 5001/100 5005/49 5015/42 46 5019/40 400
5020/101 113 545 715 814 830
SEEN-BY: 5020/846 848 1042 2992 4441 5480 8086
12000 5022/128 5024/1024
SEEN-BY: 5029/32 5030/49 115 1081 1474 5036/26
5049/1 3 5050/151 5053/51 58
SEEN-BY: 5054/8 30 89 5058/104 5060/900 5061/133
5068/45 5083/1 444 6090/1
@PATH: 460/5858 58 463/68 5020/1042 4441