Как читать не-ASCII символы из стандартного ввода CLI

Если я наберу å в 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 ). Большое спасибо Тимоти Мартенсу!

16
задан Jon 14 December 2011 в 03:43
поделиться