【发布时间】:2012-12-05 23:37:46
【问题描述】:
在 Visual C 中编码,Windows 似乎输出带有 1252 代码页的文本。
如何将代码页设置为其他内容,例如UTF7,来自 C 代码? (例如 API 函数调用是什么?)
我查看了How to Output Unicode Strings on the Windows Console,但它没有给出我具体问题的确切答案。
还有this answer 显示如何显示当前代码页,但没有显示如何从 C 中设置代码页。
【问题讨论】:
-
不,如果您接近 1252,那么控制台编码将是 437,即旧的 IBM-PC 代码页。你用 SetConsoleCP() 改变它
-
@HansPassant,无论我为 SetConsoleCP 尝试哪个 CP(例如 CP_UTF7、CP_WINAPI),字符串都会以完全相同的方式将 printf 打印到控制台。 (例如 193、63、140 个单字节值在 VS2010 调试器中显示为代码页 1252 字符,但奇怪的是,控制台上实际显示的是那些打印为 unicode 9524、66、238 的值)。为什么 SetConsoleCP 不改变字节的显示方式?
-
您必须选择 8 位编码,CP_UTF8 是个好主意。然后,您还必须将字体更改为非终端字体。康索拉斯是个好主意。
-
很高兴知道,顺便说一句 SetConsoleCPOutput 确实工作。
标签: c visual-c++ encoding