Nп/п : 52 из 100
От : Vitaliy Aksyonov 1:104/117 15 мар 24 08:38:38
К : Stas Mishchenkov 15 мар 24 17:48:02
Тема : Re: В консольном режиме Linux даже при выборе кодировки UTF-8 вместо ки
----------------------------------------------------------------------------------
@MSGID: 1:104/117 65f45e53
@REPLY: 2:460/5858 65f3f586
@CHRS: CP866 2
@TZUTC: -0600
@TID: hpt/lnx 1.9 2022-07-03
Привет, 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)
SEEN-BY: 46/49 50/109 104/117 221/6 240/1120 250/25
301/1 341/66 451/31
SEEN-BY: 452/28 166 455/19 463/68 467/888 4500/1
5000/111 5001/100 5005/49
SEEN-BY: 5015/42 46 5019/40 400 5020/101 113 545
715 814 830 846 848 1042
SEEN-BY: 5020/2992 4441 5480 8086 12000 5022/128
5029/32 5030/49 115 1081
SEEN-BY: 5030/1474 5036/26 5049/1 3 5050/151
5053/51 58 5054/8 89 5058/104
SEEN-BY: 5060/900 5061/133 5068/45 5083/1 444
6090/1
@PATH: 104/117 5020/1042 4441