【问题标题】:C Programming - ascii for windows "unknown" charactersC 编程 - 用于 Windows“未知”字符的 ascii
【发布时间】:2013-09-10 14:37:50
【问题描述】:

我在 Windows 中编程,但在我的 C 控制台中,某些字符(如 é、à、ã)无法识别。我想看看如何让寡妇将这些字符解释为在控制台中使用 unicode 或 utf-8。

我会很高兴有一些启发。 非常感谢

【问题讨论】:

  • 严格来说,ASCII只定义了0-127个字符。从这个意义上说,你的问题是没有意义的。
  • 您能展示一个您尝试过但不起作用的简单示例程序或片段吗?
  • 这是否相关(没有我无法分辨的代码)?stackoverflow.com/questions/11287213/…
  • 我猜 cmd.exe 使用与旧 DOS 相同的符号表。这意味着您将拥有 7 位 ASCII,然后是非标准的“扩展 ASCII”,例如 this link 中的表格。 “扩展 ASCII”与 UTF-8 不兼容。
  • @Bathsheba,当他们真正的意思是“8位”时,有些人使用“ascii”。我的命令窗口默认使用代码页 437,其中有许多重音字符,但位置与 ISO/IEC-8859-1(用于 Unicode 的前 256 个代码点)中的位置不同。

标签: c windows console ascii


【解决方案1】:

控制台是指cmd.exe?它不能很好地处理 Unicode,但是您可以通过将显示字体更改为 Lucida Console 并将代码页从“OEM”更改为“ANSI”来使其显示“ANSI”字符。通过选择字符,你似乎是西欧人,所以在运行你的应用程序之前尝试给出这个命令:

chcp 1252

如果您想通过 UTF-8 输出试试运气,请改用 chcp 65001

【讨论】:

    【解决方案2】:

    虽然我完全同意Joni的回答,但我觉得可以补充一个细节:

    由于 Telmo Vaz 询问如何为 C 程序解决这个问题,我们可以考虑在代码中添加系统命令的替代方案:

      #include <stdlib.h>   // To use the function system();
      #include <stdio.h>
    
      int main(void) {
          system("CHCP 1252");
    
          printf("Now accents are right: áéíüñÇ  \n");
          return 0;
      }
    

    编辑 用代码页做一些实验是个好主意。查看下表以获取信息(在 Windows 下):

    Windows Codepages

    【讨论】:

    • 非常感谢您,先生
    • 你检查过这是否真的有效吗?我认为chcp是一个内置命令,而不是可以通过system执行的外部程序。
    • @Joni 这很有效,因为我会说西班牙语,所以我用过数千次。
    猜你喜欢
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 2013-07-04
    • 2017-01-18
    • 1970-01-01
    相关资源
    最近更新 更多