Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.GOLDED
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.GOLDED с датами от 16 Jul 13 03:28:02 до 07 May 24 17:54:30, всего сообщений: 3555
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 3509 из 3555 ======================================== 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> -------------
VA> #include <locale.h>
VA> #include <stdio.h>

VA> int main()
VA> {
VA>   printf("%s", setlocale(LC_ALL, "");
VA>   return 0;
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

Хотя в консоли 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)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.026702 секунды