Unicode и MS DOS сессии


0

Учитывая UTF-8 + Windows CMD кошмар ...

После прочтения этого вопроса , являются ли эти решения только частичными? Есть ли способ установить глобально набор символов / кодировку в среде cmd? Кажется, что команда CHCP не меняет кодировки stdout / stderr.

Чтобы проверить это: напишите программу, которая заполняет файл латинскими / корейскими / украинскими строками.

При прямом выводе файл будет в порядке, если вы правильно установите кодировку в исходном коде (я проверил это с помощью Java, простые настройки кодирования для файлов). Но если вы перенаправите свой вывод в файл журнала, вы просто будете иметь ряд ????????????????????...

Также может быть полезно перенаправление, например:

PROMPT> myprog < inputdata.txt > outputdata.txt

Я что-то пропустил? Это cmd, который плохо конвертирует stdout, или Java, который адаптирует System.out, в зависимости от кодировки cmd? Я не нашел никакого метода, чтобы переопределить кодировку System.out / err.


Прочитайте ss64.com/nt/chcp.html и этот подробный анализ в отличном ответе @andrewdotn на другой вопрос в SO. К вашему сведению, у меня DejaVu Sans Monoустановлен шрифт.
JosefZ

Чтобы ответить на вопрос, является ли это cmd или программой ... попробуйте вставить символ в cmd, если он идет туда, то cmd подойдет. т.е. шрифт поддерживает это. Я считаю, что type может отображать файл с забавными символами, если это Unicode LE (файл xxd -p, ищите fffe в начале, сохраняйте файл в блокноте как 'unicode', что является юникодом с прямым порядком байтов), но больше не может отображать эти забавные символы.
Бароп

связанный вопрос, но для C # stackoverflow.com/questions/30904504/…
barlop

Я нахожу это для redireciton. utf8 работает до-
диезно,

Большое спасибо за ваши ответы, наконец-то поняли: какими бы ни были настройки сеанса, вы должны переопределить stdout и stderr. Для Java сделайте что-то вроде: myStdOut = new PrintWriter (new OutputStreamWriter (System.out, "UTF8")); см. этот пост: poeticcode.wordpress.com/2009/01/19/systemout-and-utf8 . Большое спасибо этому вкладчику. Не уверен в настоящее время, что делать, чтобы иметь дело с System.in.
Груберт

Ответы:


0

Учитывая UTF-8 + Windows CMD кошмар ...

Работает на C #.

Должно работать и на Java, возможно, вы делаете это неправильно. Вы должны поместить свой код проблемы в stackoverflow и спросить, где вы ошибаетесь с инструкциями кодирования.

Чтобы проверить это: напишите программу, которая заполняет файл латинскими / корейскими / украинскими строками.

Я сделал что-то подобное в C #

На прямом выходе,

Вы имеете в виду на дисплее

файл будет в порядке, если вы правильно установите кодировку в исходном коде (я проверил это с помощью Java, простые настройки кодирования для файлов). Но если вы перенаправите вывод в файл журнала, у вас будет просто серия ???????????????????? в этом ...

Вы должны получить правильное утверждение кодировки в своем коде, тогда> будет работать.

Мне не нужно было менять CHCP, чтобы просто перенаправить символы unicii не ascii в файл. Или, говоря по-другому.

Также может быть полезно перенаправление, например:

PROMPT> myprog <inputdata.txt> outputdata.txt Я что-то упустил? Это cmd, который плохо конвертирует stdout, или Java, который адаптирует System.out, в зависимости от кодировки cmd? Я не нашел никакого метода, чтобы переопределить кодировку System.out / err.

Это все проблема с вашим кодом Java.

Посмотрите, как это работает здесь, в C #

https://stackoverflow.com/questions/30904504/font-is-right-why-cant-i-get-this-unicode-character-to-display-in-this-c-sharp

И посмотрите на мой комментарий к ответу Хтина. Но это для C #

Вы хотите это для Java, опубликуйте демонстрационный фрагмент кода со своим вопросом в stackoverflow. Это проблема программирования, которая у вас есть.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.