所以,我试图在C程序中从用户那里得到一些输入,做fscanf(stdin, "%s", buffer)
当我输入字符å
时,我得到的值为134,对应于代码页437.
但是当我使用windows函数GetACP()
时,我得到1252作为活动代码页,134与该代码页中的å
不匹配。我尝试将代码页设置为UTF-8,但根本没有给我任何输入。
有没有办法获取用户输入的相应代码页并将其转换为unicode格式?或者,如果有更好的方式获得输入。
我一直在四处寻找,但我找不到太多关于此的信息。
答案 0 :(得分:1)
由于历史原因,控制台窗口使用的代码页称为OEM代码页。您可以使用GetOEMCP
获取默认代码页,使用GetConsoleCP
获取当前选定的代码页。
您可以将控制台设置为使用命令chcp 65001
使用UTF-8,但Microsoft不保证它在所有情况下都能正常工作。
如果您不需要控制台的正常C ++ I / O,则可以使用Console Functions代替,例如WriteConsoleW输出Unicode字符串。