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

时间:2012-07-05 13:47:29

标签: unicode console

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

Console.InputEncoding = Encoding.UTF8;

2 个答案:

答案 0 :(得分:3)

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

public class Test {
    static void Main() {
        System.Console.OutputEncoding = System.Text.Encoding.UTF8;
        System.Console.WriteLine("پارسی");
    }
}

适用于我(是的,即使Windows控制台使用UTF-16,您也必须设置UTF-8;我不知道为什么)。

C:\>test.exe
پارسی

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

答案 1 :(得分:-1)

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