【问题标题】:How to set Windows console output code page to other than 1252?如何将 Windows 控制台输出代码页设置为 1252 以外的值?
【发布时间】: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


【解决方案1】:

您必须选择 8 位编码,CP_UTF8 是个好主意。那么你必须 还将字体更改为非终端字体。康索拉斯是个好主意。 ——汉斯·帕桑特

SetConsoleOutputCP

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多