阅读额外字符的复杂性

时间:2015-01-24 14:48:35

标签: c windows winapi character-encoding

使用默认控制台字体光栅字体8x12 时,我无法使用默认控制字符 ReadConsoleOutputCharacter()。这些字符将打印为?


如果我将控制台字体更改为“Consolas”或“Lucida Console”,请阅读这些额外字符 ReadConsoleOutputCharacter()打印出来没有问题。


我能做些什么吗?

2 个答案:

答案 0 :(得分:1)

无论如何,我修改了它,在转换为控制台I / O映射后改变语言环境:

    SetConsoleOutputCP(GetACP());
    SetConsoleCP(GetACP());
    setlocale(LC_ALL, "");

@David Heffernan 我建议你阅读this

答案 1 :(得分:0)

根据文档https://msdn.microsoft.com/en-us/library/windows/desktop/ms684969%28v=vs.85%29.aspx

  

此函数使用Unicode字符或8位字符   控制台的当前代码页。控制台的代码页默认为   最初到系统的OEM代码页。更改控制台的代码   页面,使用SetConsoleCP或SetConsoleOutputCP函数,或使用   chcp或mode con cp select = commands。

我相信你会在尝试显示之前找回需要编码到字符集的unicode字符串。