将用户输入转换为unicode

时间:2014-09-30 15:54:26

标签: c input unicode

所以,我试图在C程序中从用户那里得到一些输入,做fscanf(stdin, "%s", buffer) 当我输入字符å时,我得到的值为134,对应于代码页437.

但是当我使用windows函数GetACP()时,我得到1252作为活动代码页,134与该代码页中的å不匹配。我尝试将代码页设置为UTF-8,但根本没有给我任何输入。

有没有办法获取用户输入的相应代码页并将其转换为unicode格式?或者,如果有更好的方式获得输入。

我一直在四处寻找,但我找不到太多关于此的信息。

1 个答案:

答案 0 :(得分:1)

由于历史原因,控制台窗口使用的代码页称为OEM代码页。您可以使用GetOEMCP获取默认代码页,使用GetConsoleCP获取当前选定的代码页。

您可以将控制台设置为使用命令chcp 65001使用UTF-8,但Microsoft不保证它在所有情况下都能正常工作。

如果您不需要控制台的正常C ++ I / O,则可以使用Console Functions代替,例如WriteConsoleW输出Unicode字符串。