Sam Sam - 7 months ago 39
Vb.net Question

How to write Unicode characters to the console?

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.

Answer

It's likely that your output encoding is set to ASCII. Try using this (MSDN link) before sending output:

Console.OutputEncoding = System.Text.Encoding.Unicode

and here's a little console test app you may find handy:

C#

using System;
using System.Text;

public static class MyClass {
    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 MyModule
    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 Toolbar 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