= Сообщение: 3506 из 3632 ======================================== RU.GOLDED = От : Vitaliy Aksyonov 1:104/117 15 Mar 24 08:38:38 Кому : Stas Mishchenkov 15 Mar 24 08:38:38 Тема : Re: В консольном режиме Linux даже при выборе кодировки UTF-8 вместо ки FGHI : area://RU.GOLDED?msgid=1:104/117+65f45e53 На : area://RU.GOLDED?msgid=2:460/5858+65f3f586 = Кодировка сообщения определена как: CP866 ================================== Ответ: area://RU.GOLDED?msgid=2:460/5858+65f47128 ============================================================================== Привет, Stas!
15 Mar 24 10:04, ты писал(а) мне:
VA>>>>>>> Интересно, как он определяет локальную кодировку на венде. VA>>>>>>> :)
SM>>> [...skipped...]
VA>>>> Надо чтобы он брал из setlocale(LC_что-то, NULL). И это будет VA>>>> работать везде, где есть setlocale. А есть оно почти везде.
SM>>> $locale = setlocale(LC_CTYPE);
SM> [...skipped...]
SM>>> Не работает.
VA>> Ты неправильно её готовишь. Я тоже на это наступил. Надо VA>> внимательнее читать документацию. :)
SM> # query and save the old locale SM> $old_locale = setlocale(LC_CTYPE);
SM> setlocale(LC_CTYPE, ""); SM> # LC_CTYPE now reset to the default defined by the SM> # LC_ALL/LC_CTYPE/LANG environment variables, or to the system SM> # default.
Это именно то, что надо. Когда вызываешь setlocale(LC_CTYPE, NULL), то оно возвращает ранее выставленную локаль. А так, как ты её явно не выставлял, то и возвращается "C".
VA>> Попробуй так: setlocale(LC_CTYPE, "");
SM> Та же фигня, только в левой руке.
Этот вариант как раз меняет локаль с "C" на то, что настроено в системе. Почему оно у тебя возвращает "C", это вопрос.
Я не перлом пробовал правда, но не думаю, что есть какая-то разница, ведь перл тупо вызывает ту же системную функцию.
VA>> В твоём варианте оно возвращает текущую для процесса. А так, как VA>> она ранее не была выставлена, то и возвращает C. Мой вариант как VA>> раз выставляет локаль используя LANG и другие переменные и VA>> возвращает тебе то, что наделал.
SM> Судя по доке, пустая строка должна вызвать ресет локали на дефаулт.
Именно. А он берется из тех же $LANG и так далее.
SM> Да, это я проверял для
SM> D:\Fido\inbound>ver Microsoft Windows [Version 10.0.19045.4170]
SM> В семёрке оно, кажется, работало иначе.
Да одинаково оно работает. Просто в венде локаль странная.
Пробовал тот же скрипт ради интереса под линуксом запустить? Что кажет?
Best regards, Vitaliy Aksyonov.
... Почему все дуры такие женщины? --- GoldED+/LNX 1.1.5-b20240305-beta * Origin: Aurora, Colorado (1:104/117)