Как записать символы 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:.) и выберите Свойства -> шрифт. Попробуйте некоторые другие шрифты, чтобы увидеть, если они отображают ваш символ правильно:
Я нашел элегантное решение на 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
}
}