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

5

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

Console.InputEncoding = Encoding.UTF8;
2个回答

7

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

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 Console),否则控制台会尝试将所有内容转换为OEM字符集,并且无法转换的字符会变成问号。之后,控制台仍然不支持波斯语文字的复杂脚本渲染,但您可以完全复制/粘贴它。

-1
据我所知,Windows 内部使用 UCS-2。您尝试将文本转换为此编码了吗?

Windows 十年前就不再使用 UCS-2 了。 - Joey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接