在C语言的控制台窗口中输出Unicode字符#

在C语言的控制台窗口中输出Unicode字符#,unicode,console,Unicode,Console,我的应用程序生成波斯语文本,并在控制台窗口中显示为未知代码! 如何在控制台中的应用程序输出中使用Unicode文本? 我习惯于使用下面的代码,但它不能正常工作 Console.InputEncoding = Encoding.UTF8; 据我所知,Windows在内部使用UCS-2。是否已尝试将文本转换为此编码?如果希望输出正确显示,则应设置输出编码: public class Test { static void Main() { System.Console.Out

我的应用程序生成波斯语文本,并在控制台窗口中显示为未知代码! 如何在控制台中的应用程序输出中使用Unicode文本? 我习惯于使用下面的代码,但它不能正常工作

Console.InputEncoding = Encoding.UTF8;

据我所知,Windows在内部使用UCS-2。是否已尝试将文本转换为此编码?

如果希望输出正确显示,则应设置输出编码:

public class Test {
    static void Main() {
        System.Console.OutputEncoding = System.Text.Encoding.UTF8;
        System.Console.WriteLine("پارسی");
    }
}
适合我(是的,即使Windows控制台使用UTF-16,您也必须设置UTF-8;我不知道为什么)


请注意,控制台可能会显示
??
,在这种情况下,您需要将控制台字体设置为TrueType字体(例如,控制台或Lucida控制台),否则控制台会尝试将所有内容转换为OEM字符集,无法转换的字符将成为问号。此后,由于没有复杂的脚本渲染支持,控制台仍然显示不出波斯语,但您可以复制/粘贴它。

Windows已经十多年没有使用UCS-2了。
C:\>test.exe
پارسی