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

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

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

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

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

PROMPT> myprog < inputdata.txt > outputdata.txt

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

1 ответ1

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. Это проблема программирования, которая у вас есть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .