RU.GOLDED---------------- < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 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



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

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