我有以下程序:
let txt = "إتصالات"
printfn "Text is: %s" txt
0 // return an integer exit code
txt 的值被设置为一些阿拉伯字符。当我运行程序时,控制台上显示的是一堆问号而不是字符。在 Visual Studio 2012 调试器中,正在为 txt 变量显示正确的字符。
我做错了什么,如何正确显示国际字符?
我有以下程序:
let txt = "إتصالات"
printfn "Text is: %s" txt
0 // return an integer exit code
txt 的值被设置为一些阿拉伯字符。当我运行程序时,控制台上显示的是一堆问号而不是字符。在 Visual Studio 2012 调试器中,正在为 txt 变量显示正确的字符。
我做错了什么,如何正确显示国际字符?
根据How to write unicode chars to console?您需要OutputEncoding
在控制台上设置属性,如下所示:
System.Console.OutputEncoding <- System.Text.Encoding.Unicode
let txt = "إتصالات"
printfn "Text is: %s" txt
0 // return an integer exit code
不过,这个问题的答案值得一读,因为它还描述了为什么需要更改控制台字体才能真正完成这项工作,以及如何做到这一点。
以下是一些包含更多信息的附加链接:
更新:由于示例中的阿拉伯语文本在 StackOverflow 上呈现得很好,因此我查看了 CSS 以查看它们用于呈现预格式化文本的字体。使用该列表和 Windows 字符映射工具(开始 -> 所有程序 -> 附件 -> 系统工具 -> 字符映射),我发现该Courier New
字体(随 Windows 提供)支持阿拉伯字符。如果您在“Windows 控制台和 TrueType 字体”链接(上图)中使用注册表破解,您应该能够添加Courier New
为可以在控制台中使用的字体。