How to write Unicode characters to the console?

C#.Netvb.netConsole Application

C# Problem Overview


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.

C# Solutions


Solution 1 - C#

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:

picture of console font edit

Solution 2 - C#

Console.OutputEncoding Property

https://docs.microsoft.com/en-us/dotnet/api/system.console.outputencoding

> 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.

Solution 3 - C#

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
	}
}

Solution 4 - C#

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

for some characters you need to install extra fonts (ie. Chinese).

In Windows 10 first go to Region & language settings and install support for required language: enter image description here

After that you can go to Command Prompt Proporties (or Defaults if you like) and choose some font that supports your language (like KaiTi in Chinese case): enter image description here

Now you are set to go: enter image description here

Solution 5 - C#

This works for me:

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

To display some of the symbols, it's required to set Command Prompt's font to Lucida Console:

  1. Open Command Prompt;

  2. Right click on the top bar of the Command Prompt;

  3. Click Properties;

  4. If the font is set to Raster Fonts, change it to Lucida Console.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSamView Question on Stackoverflow
Solution 1 - C#Paul SasikView Answer on Stackoverflow
Solution 2 - C#PažoutView Answer on Stackoverflow
Solution 3 - C#DestinerView Answer on Stackoverflow
Solution 4 - C#watbywbarifView Answer on Stackoverflow
Solution 5 - C#თემო ნემსიწვერიძეView Answer on Stackoverflow