【问题标题】:how to print non-ASCII characters in C如何在C中打印非ASCII字符
【发布时间】:2012-10-14 14:13:13
【问题描述】:

我尝试用 C 输出字符列表: http://www.alt-codes.net/

for (i=0; i<len; i++){
    printf("%d\t: %c", i, i);
}

我遇到的所有非 ASCII 字符的问题?在 Ubuntu 上工作。

我怎样才能以良好的方式输出它们。

【问题讨论】:

    标签: c non-ascii-characters


    【解决方案1】:

    格式会很差,但除此之外您发布的代码有效。

    ASCII 字符 0-31 是各种空格字符,没有标准化的打印方式。您发布的链接是一个常见但非标准的“扩展 ASCII 表”。无法保证这些确切的符号将打印在您的特定平台上。

    它们在 Windows 7 中对我来说工作得很好,经过 GCC 和 Embarcadero C++ 测试,都打印了这些符号。但在另一个操作系统和/或编译器上,可能会打印不同的符号或根本不打印。

    只有 ASCII 字符 32 - 126 保证在所有系统上都是可打印的,并且符号相同。

    【讨论】:

      【解决方案2】:

      各种 ASCII 字符,例如许多低于 32 的字符,是不可打印的。在打印之前,您需要将不可打印的内容翻译成其他内容(例如空格)。

      请注意,您链接到的 ALT 代码不是 ASCII 代码。

      【讨论】:

        【解决方案3】:

        您的字符集不得包含 等字符。您正在查看的是 alt 键代码符号列表,根本不是 ASCII。

        【讨论】:

          【解决方案4】:

          根据您的需要,您可以采用十六进制编辑器的方法,只打印那些具有图形表示的字符,为此您可以使用isprint()isgraph()(最新版本与@基本相同) 987654323@但不打印空格)在ctype.h中定义,例如:

          for (i = 0; i < len; i++) {
              printf("%d\t: %c", i, isprint(i) ? i : '.');
          }
          

          【讨论】:

            猜你喜欢
            • 2010-12-14
            • 2021-05-21
            • 2013-11-19
            • 2015-09-14
            • 1970-01-01
            • 1970-01-01
            • 2021-04-09
            • 1970-01-01
            • 2021-11-29
            相关资源
            最近更新 更多