我有以下程序:
let txt = "???????"
printfn "Text is: %s" txt
0 // return an integer exit code
Run Code Online (Sandbox Code Playgroud)
txt的值设置为某些阿拉伯字符.当我运行程序时,控制台上显示的是一堆问号而不是字符.在Visual Studio 2012调试器中,正在为txt变量显示正确的字符.
我做错了什么,如何正确显示国际角色?
根据如何将unicode字符写入控制台?你需要OutputEncoding在控制台上设置属性,如下所示:
System.Console.OutputEncoding <- System.Text.Encoding.Unicode
let txt = "???????"
printfn "Text is: %s" txt
0 // return an integer exit code
Run Code Online (Sandbox Code Playgroud)
这个问题的答案值得一读,因为它还描述了为什么需要更改控制台字体才能真正完成这项工作,以及如何做到这一点.
以下是一些包含更多信息的附加链接:
更新:由于示例中的阿拉伯文本在StackOverflow上渲染得很好,我偷看了CSS,看看他们用来渲染预格式化文本的字体.使用该列表和Windows字符映射工具(开始 - >所有程序 - >附件 - >系统工具 - >字符映射),我发现Courier New字体(Windows附带)支持阿拉伯字符.如果您在"Windows控制台和TrueType字体"链接(上面)中使用注册表黑客,您应该能够添加Courier New为可在控制台中使用的字体.