Відповіді:
Цілком імовірно, що для вашого вихідного кодування встановлено 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
Можливо також, що ваш вибір шрифту Console не підтримує саме цей символ. Клацніть на меню панелі інструментів 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
}
}
Властивість Console.OutputEncoding
http://msdn.microsoft.com/library/system.console.outputencoding(v=vs.110).aspx
Зауважте, що для успішного відображення символів Unicode на консолі потрібно:
Крім того Console.OutputEncoding = System.Text.Encoding.UTF8;
для деяких символів вам потрібно встановити додаткові шрифти (наприклад, китайською).
У Windows 10 спочатку перейдіть до налаштувань регіону та мови та встановіть підтримку потрібної мови:
Після цього ви можете перейти до командних рядків пропорцій (або за замовчуванням, якщо вам подобається) та вибрати якийсь шрифт, який підтримує вашу мову (наприклад, KaiTi у китайському випадку):
Це працює для мене:
Console.OutputEncoding = System.Text.Encoding.Default;
Щоб відобразити деякі символи, потрібно встановити шрифт командної строки на консоль Lucida:
Відкритий командний рядок;
Клацніть правою кнопкою миші на верхній панелі командного рядка;
Клацніть Властивості;
Якщо для шрифту встановлено Raster Fonts, змініть його на Lucida Console.
Console.OutputEncoding
не може бути встановлено наEncoding.Unicode
(UTF-16).Encoding.UTF8
Однак це можливо.