Alexandr03
@Alexandr03
Junior Верстальщик

Можно-ли использовать японские символы в консоли?

Всем доброго времени суток! Спасибо. что обратили на этот вопрос внимание. В чём заключается проблема:
У меня есть массив, значения которого идут из файла:
string[] Symbols = File.ReadAllLines("Symbols.txt");

В файле японские символы. И когда производится вывод символа в консоль, вместо символа показывает знак вопроса. Поискал на других форумах не нашёл, скорее всего плохо искал. По этому обращаюсь за помощью сюда. Как вывести символы в консоль?
Спасибо!
  • Вопрос задан
  • 322 просмотра
Решения вопроса 1
@Dasolod
Нужно установить кодировку, для того что выводится в консоль, и переключить саму консоль на отображение 932 кодовой страницы.

public class Program
    {
        [DllImport("kernel32.dll", SetLastError = true)]
        private static extern bool SetConsoleOutputCP(uint wCodePageID);

        [DllImport("kernel32.dll", SetLastError = true)]
        private static extern bool SetConsoleCP(uint wCodePageID);

        private static void Main(string[] args)
        {
            SetConsoleOutputCP(932);
            SetConsoleCP(932);
            Console.OutputEncoding = Encoding.Unicode;
            Console.WriteLine(@"一	人	七	八	九	十	入	二	三	上
            下   大   女   万   土   山   千   川   子   小
            口   手   五   日   六   分   中   円   月   午");
        }
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
В файле японские символы. И когда производится вывод символа в консоль, вместо символа показывает знак вопроса.

Либо проблема в кодировке консоли, либо проблема в шрифтах.
Чтобы принудительно со стороны приложения поменять кодировку - есть
System.Console.OutputEncoding = Encoding.UTF8;
Также можно это сделать извне: на винде - команда chcp 65001.
Вроде можно даже глобально заставить все приложения работать с юникодом (в настройках), но у меня много приложений тогда начинаю себя плохо вести.
А со шрифтами уже пользователю придётся разбираться.

Ещё следует убедиться, что при чтении файла используется та же кодировка, которая использовалась при записи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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