RU.GOLDED---------------- < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 Nп/п : 56 из 100
 От   : Stas Mishchenkov                    2:460/5858        16 мар 24 11:46:20
 К    : Vitaliy Aksyonov                                      16 мар 24 11:57:02
 Тема : В консольном режиме Linux даже при выборе кодировки UTF-8 вместо ки
----------------------------------------------------------------------------------
                                                                                 
@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



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх