VB 2010:控制台应用程序正常打印一些上标数字字符

VB 2010: Console application prints some superscript number characters as normal


我正在制作的 Visual Basic (2010 Express) .NET 应用程序存在一个小问题。这是一个基于控制台的应用程序,我希望它打印上标数字。
好吧,我已经从 Charmap 中找到了上标数字,我的代码是这样的:

Public Module MainModule
    Public Sub Main()
        Console.Write(GetExponentialNumAsStr(12345, 12345)) 'This must be printed as 12345¹²³⁴⁵
        Console.ReadKey(True)
    End Sub
    Public Function GetExponentialNumAsStr$(Number As Double, Exponent%)
        If Exponent = 1 Then Return Number : Exit Function
        Return Number.ToString & Exponent.ToString.Replace("-", "⁻").Replace("0", "⁰").Replace("1", "¹").Replace("2", "²").Replace("3", "³").Replace("4", "⁴").Replace("5", "⁵").Replace("6", "⁶").Replace("7", "⁷").Replace("8", "⁸").Replace("9", "⁹")
    End Function
End Module

好的,GetExponentialNumAsString$ 函数运行良好并给出 12345¹²³⁴⁵,这没问题(通过 Immediate window 检查),但唯一的问题是,虽然在 Console 视图中打印相同内容会得到以下结果:

123451²345

为什么只有 2 以上标形式显示,为什么其他数字也不显示?
如果我尝试将 0 到 9 作为上标打印,结果如下:

1²345678?°

好吧,9 不见了,但其他数字让我感到困惑。只有 2 和 0 以上标形式显示!


我还尝试将所有上标数字复制粘贴到 Command Prompt window... 这就是结果:

命令提示符,事实上,当复制粘贴时,显示正确!

所以我该怎么做?将那些上标数字转换成CP-437 (DOS)编码然后显示出来?
请帮我!谢谢大家!
编辑: 我试过使用 CP-437 编码将那个东西保存为桌面上的文件。出现的是 1ý345678?ø。当手动转换回 UTF-8 或一种通用编码时,它返回为 1²345678?°.
还尝试使用 ECHO ¹²³⁴⁵⁶⁷⁸⁹⁰>Hello123.TXT ,结果与上面相同。所以……没用。
而且我有点确定 CP-437 有那些上标字符,因为命令提示符可以显示它们!!!

感谢,技巧是设置Console的输出编码为UTF-8,如

Console.OutputEncoding = System.Text.Encoding.UTF8

看!来了!