Вывод Unicode в командной строке Windows?

Я написал небольшое Java-приложение, вывод которого включает символы Unicode. Когда я использую Eclipse для его запуска, я вижу все результаты, как и ожидалось.

Люди, которые должны использовать приложение, будут запускать его как файл jar. Я думал, что они могут использовать стандартное окно cmd, но в этом окне Unicode отображается как Gibberish.

Есть ли способ заставить "окно cmd" распознавать символы Юникода и отображать их правильно? Или есть какой-нибудь инструмент, чтобы легко запустить файл JAR и получить правильный вывод?

Кстати, перенаправление вывода в файл работает нормально, но программа интерактивная, так что это не будет хорошим решением.

Изменить: Спасибо всем за предложения. Кажется, что в шрифтах cmd нет нужных мне символов, поэтому изменение кодовой страницы не решило мою проблему.

Я нашел способ добавить больше моноширинных шрифтов в консоль, но после того, как я добавлю их, любое изменение, которое я хочу сделать относительно шрифтов (даже выбирая один из оригинальных шрифтов другого размера), игнорируется.

Я думаю, что я просто попробую с другим инструментом, который поддерживает выбор другого шрифта легче.

6 ответов

Ссылка: Java Unicode в командной строке Windows

Пытаться chcp 1252 или же chcp 65001 из командной строки. С Lucida Console или другой поддержкой шрифтов.

В C++/C просто используйте это: system("chcp 65001");

Не забудьте изменить шрифт консоли на Lucida Console

Попробуй CMD /c /U java your.jar

Проблема заключается в шрифте, с которым консоль Windows отображает вывод. К сожалению для вас, это пользовательская настройка.

Я рекомендую вам предложить своим пользователям установить шрифт консоли Windows в Lucida Console. Этот шрифт должен иметь возможность обрабатывать широкие символы / символы Юникода.

Для любых ответов, проверьте это сначала. Это простая консольная программа, которая проверяет, что изменение шрифта на самом деле не работает.

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main( string[] args )
        {
            Console.OutputEncoding = System.Text.Encoding.UTF8;
            Console.WriteLine( "日本語です" );
            Console.Write( "Finished. Press a key. " );
            Console.ReadLine();
            return;
        }
    }
}

Я проверю, чтобы узнать, является ли ответ конкретно "Не может быть сделано". Другие возможности для проверки: используйте другую оболочку. то есть Powershell? Я посмотрю, если это работает.

Тем не менее, вы можете сделать:

ConsoleApplication1.exe > output.txt
notepad.exe output.txt

Отказ от ответственности: Мой пример - C#, но консольное приложение все еще должно работать как таковое.

И пока смотрите результаты.

UTF-16 на cmd.exe

    Open/run cmd.exe
    Click on the icon at the top-left corner
    Select properties
    Then "Font" bar
    Select "Lucida Console" and OK.
    Write Chcp 10000 at the prompt
    Finally dir /b

Также из Есть ли командная оболочка Windows, которая будет отображать символы Unicode?

CHCP 65001
DIR > UTF8.TXT
TYPE UTF8.TXT
Другие вопросы по тегам