我正在使用f#制作基于控制台的纸牌游戏,而我正在努力使用unicode字符显示卡片套装.映射suit-to-char表示如下函数:
let suitSymbol = function | Spades -> "\u2660" | Clubs -> "\u2663" | Diamonds -> "\u2666" | Hearts -> "\u2665"
使用显示
printf "%s" <| suitSymbol Spades
在fsi中工作正常:
但是当使用fsc.exe编译时,它会显示不同的(不适合)字符:
我试过改变源文件的编码但没有效果.有没有办法让它在编译时起作用?
编辑(30.01.2017):斯图亚特的anwser是正确的,但我无法克服事实,它需要进入
chcp 65001
每次我想运行我的游戏.
在研究了在F#中引用DLL的方法之后,我提出了以下解决方案:
module Kernel = [] extern bool SetConsoleOutputCP(uint32 wCodePageID)
在我添加的主要功能代码中
[] let main args = Kernel.SetConsoleOutputCP 65001u |> ignore
它仅修改此进程的代码页,因此其他应用程序将正常运行.