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

13

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

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

Есть ли способ сделать & quot; окно cmd & quot; распознавать символы Юникода и правильно их отображать? Или есть какой-нибудь инструмент для простого запуска jar-файла и получения правильного вывода?

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

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

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

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

Here это способ добавить больше шрифтов. Не уверен, что если есть проблема, о которой упоминал ОП, все же. mbomb007
Полагаю, вам придется написать «консоль»; для вашего приложения в конце концов ... maxwellb
& quot; способ добавить больше моноширинных шрифтов в консоль & quot; - ссылка мертва mbomb007

Ваш Ответ

4   ответа
11

Java Unicode в командной строке Windows

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

1

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

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Dikla
0

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

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

0

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

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

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

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

Похожие вопросы