Как записать символы Unicode на консоль?

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

3 ответов


вероятно, что ваша выходная кодировка установлена в 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



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

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

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

using System;

public class Test
{
    public static void Main()
    {
        Console.Write('\u2103'); //℃ character code
    }
}