【问题标题】:Showing characters in extended ASCII code (Ubuntu)以扩展 ASCII 码显示字符 (Ubuntu)
【发布时间】:2013-06-07 17:55:38
【问题描述】:

我需要打印扩展的 ASCII 字符部分,即:

char p = 219; // a rectangle   
printf("%c\n", p);

但是,在 shell 中它没有显示正确的字符.. 我可以做些什么来查看矩形?

谢谢

【问题讨论】:

    标签: c ubuntu ascii


    【解决方案1】:

    使用 libiconv 将 CP-1252 或 ISO-8859-1 或您要转换的任何 8 位字符集转换为 UTF-8;像这样:

    #include <iconv.h>
    iconv_t cd = iconv_open("utf-8", "cp-1252");
    iconv(cd, &inbuf, sizeof(inbuf), &outbuf, sizeof(outbuf)); // <- psuedocode, change to meet your needs
    

    【讨论】:

    • 这将是 cp437、cp850 或无数 DOS 代码页中的另一个。 ISO-8859-1 上没有矩形。
    • 如果是固定字符,使用iconv是没有意义的。只需查找 unicode 代码点编号或 UTF-8 并进行硬编码。
    • @ninjalj:当然,随便。那是提问者的责任。 @R:当然。但提问者说“我需要打印字符”。也许他们有更多的字符,而不仅仅是 (char)219。
    • 是的..事实上我想多次打印那个字符!
    • 当然,您可以将字符转换一次,然后重新使用 UTF-8 缓冲区。
    【解决方案2】:

    您必须使用支持扩展 ASCII 的虚拟终端。 Ubuntu 中的默认终端是 gnome-terminal。您必须在 gnome-terminal 中从 UTF-8 到 ISO-8859-2 change the character encoding 或使用其他终端。例如Konsole

    【讨论】:

    • Konsole 也一样!它不打印正确的 ascii 字符
    • 无论哪种方式,现代 Linux 终端都将是 UTF-8。你想要一些其他的字符集。
    • 没错。但是很容易将 Konsole 配置为使用 ISO-8859-2。
    【解决方案3】:

    对我来说,工作代码页是 IBM850。 使用 konsole,在配置文件配置的高级选项卡中,您可以选择代码页。 我能够以这种方式显示扩展的 ascii(对于 IPMI bios 访问很有用)。

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 1970-01-01
      • 2011-04-26
      • 2015-04-26
      • 2011-04-14
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      相关资源
      最近更新 更多