Если я наберу å
в CMD, fgets перестанет ждать дополнительных данных, и цикл будет выполняться, пока я не нажму ctrl-c
. Если я наберу «нормальные» символы, такие как a-z0-9!? (), Он будет работать должным образом.
Я запускаю код в CMD под Windows 7 с кодировкой UTF-8 ( chcp 65001
), файл сохраняется как UTF-8 без bom. Я использую PHP 5.3.5 (cli).
'. fgets(STDIN);
}
?>
Если я изменю кодировку на chcp 1252
, цикл не прервется, когда я наберу å
и выведу «> å», но «ÅÄÖåäö работают здесь» станет «Ã… ТМ - А здесь работают! ». И я знаю, что могу изменить файл на ANSI, но тогда я не могу использовать специальные символы, такие как ╠╦╗.
Так почему же fgets перестает ждать ввода пользователя после того, как я набрал åäö?
И как я могу это исправить?
РЕДАКТИРОВАТЬ:
Также обнаружена странная ошибка.
echo «Здесь работают! Или?». chr (10);
-> ��äåÅÄÖåäö работают здесь! Или? ре! Или?
.
Если первый символ в эхо - это å / ä / ö
, он выводит странные символы И конечный выходной дубликат с n - 1
char. . (n = количество åäö в начале строки).
Например: echo «åäö 1234» -> ?? äö 123434
и echo åäöåäö 1234
-> ?? äöåäö 1234 1234
.
EDIT2 (решено):
Проблема заключалась в chcp 65001
, теперь я использую chcp 437
( chcp 437 ).
Большое спасибо Тимоти Мартенсу!