I was wondering if it was possible, in a console application, to write characters like ℃
using .NET. When I try to write this character, the console outputs a question mark.
3个回答
It's likely that your output encoding is set to ASCII. Try using this before sending output:
Console.OutputEncoding = System.Text.Encoding.UTF8;
(MSDN link to supporting documentation.)
And here's a little console test app you may find handy:
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
It's also possible that your choice of Console font does not support that particular character. Click on the Windows Tool-bar Menu (icon like C:.) and select Properties -> Font. Try some other fonts to see if they display your character properly:
Console.OutputEncoding Property
http://msdn.microsoft.com/library/system.console.outputencoding(v=vs.110).aspx
Note that successfully displaying Unicode characters to the console requires the following:
- The console must use a TrueType font, such as Lucida Console or Consolas, to display characters
I found some elegant solution on MSDN
System.Console.Write('\uXXXX') //XXXX is hex Unicode for character
This simple program writes ℃ right on the screen.
using System;
public class Test
{
public static void Main()
{
Console.Write('\u2103'); //℃ character code
}
}
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版本等事宜,请你联系站长进行处理。