• Ошибка при чтении из файла Java. Как исправить?

    borisdenis
    @borisdenis
    Ленив и вреден...
    java.io.FileNotFoundException: \c\Users\X\Desktop\x.txt

    Вас не смущает, что нормальный путь должен выглядеть как c:\Users\...? Двоеточия нигде не потеряли? А так же лишний\перед именем диска.
    Ответ написан
    Комментировать
  • Из за чего в консоли вместо русского языка выводятся вопросительные знаки?

    @res2001
    Developer, ex-admin
    Это практически первый вопрос, которым задаются юниоры С++, когда пытаются запустить свою первую консольную программу под виндой.
    Ответов на него тут уже была целая пачка.

    Суть в том, что в виндовой консоли может быть 2 русские кодировки (cp866 и cp1251) (не уверен, но может быть консоль винды научилась уже нормально работать с UTF8, если научилась, то считайте, что добавилась еще одна кодировка). Причем по умолчанию используется cp866. Кодировку консоли можно менять из самой консоли или программно.
    При выводе текста в консоль никаких преобразований кодировок не происходит. В какой кодировке у вас написаны исходники - та и выводится. И если кодировка консоли и кодировка исходников не совпадают, то будет не читабельный текст.

    Самый оптимальный и самый сложный вариант - в программе узнать кодировку консоли и перед выводом конвертировать текст в эту кодировку. Так же обратную операцию производить при вводе. В этом случае исходники программы лучше всего писать в UTF8 и использовать wchar_t.

    Самый простой, дебильный и не всегда работающий (не будет работать если изменена кодировка консоли) - писать исходники в cp866.
    Немного чуть более сложный, но не правильный - поменять кодировку консоли из программы на ту в которой написаны исходники.

    Самый надежный вариант - не используйте русский в консольных программах - только английский. Сомневаюсь, что вам придется когда-то писать профессиональные консольные утилиты, которые бы умели адаптироваться к разным кодировкам, так что, возможно, нет смысла углубляться в эту тему. В GUI приложениях этой проблемы нет.
    Ответ написан
    1 комментарий