Как записать символы Unicode в консоль? - PullRequest
128 голосов
/ 22 апреля 2011

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

Ответы [ 4 ]

171 голосов
/ 22 апреля 2011

Скорее всего, ваша выходная кодировка установлена ​​на ASCII. Попробуйте использовать это перед отправкой вывода:

Console.OutputEncoding = System.Text.Encoding.UTF8;

(MSDN ссылка на сопроводительную документацию.)

А вот небольшое консольное тестовое приложение, которое вам может пригодиться:

C #

using System;
using System.Text;

public static class ConsoleOutputTest {
    public static void Main() {
        Console.OutputEncoding = System.Text.Encoding.UTF8;
        for (var i = 0; i <= 1000; i++) {
            Console.Write(Strings.ChrW(i));
            if (i % 50 == 0) { // break every 50 chars
                Console.WriteLine();
            }
        }
        Console.ReadKey();
    }
}

VB.NET

imports Microsoft.VisualBasic
imports System

public module ConsoleOutputTest 
    Sub Main()
        Console.OutputEncoding = System.Text.Encoding.UTF8
        dim i as integer
        for i = 0 to 1000
            Console.Write(ChrW(i))
            if i mod 50 = 0 'break every 50 chars 
                Console.WriteLine()
            end if
        next
    Console.ReadKey()
    End Sub
end module

Также возможно, что выбранный вами шрифт консоли не поддерживает этот конкретный символ. Нажмите на меню панели инструментов Windows (значок как C :.) и выберите Свойства -> Шрифт. Попробуйте другие шрифты, чтобы увидеть, правильно ли они отображают ваш персонаж:

picture of console font edit

8 голосов
/ 14 сентября 2014

Я нашел элегантное решение для MSDN

System.Console.Write('\uXXXX') //XXXX is hex Unicode for character

Эта простая программа пишет program прямо на экране.

using System;

public class Test
{
    public static void Main()
    {
        Console.Write('\u2103'); //℃ character code
    }
}
7 голосов
/ 09 апреля 2014

Свойство Console.OutputEncoding

http://msdn.microsoft.com/library/system.console.outputencoding(v=vs.110).aspx

Обратите внимание, что для успешного отображения символов Unicode на консоли необходимо следующее:

  • Консоль должна использовать шрифт TrueType, например Lucida Console или Consolas, для отображения символов
4 голосов
/ 23 января 2019

Помимо Console.OutputEncoding = System.Text.Encoding.UTF8;

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

В Windows 10 сначалаперейдите к Настройки языка и региона и установите поддержку для требуемого языка: enter image description here

После этого вы можете перейти к Пропорции командной строки (или значения по умолчанию, если хотите) и выберите шрифт, который поддерживает ваш язык (например, KaiTi в китайском случае): enter image description here

Теперь вы готовы идти: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...