繁体   English   中英

如何从 C 的控制台读取香蕉()?

[英]How to read banana (🍌) from console in C?

我已经尝试了很多方法来做到这一点.. 使用scanf()getc() ,但没有任何效果。 大多数时候,0 存储在提供的变量中(可能表示输入错误?)。 我怎样才能使当用户输入任何 Unicode 代码点时,它可以被正确识别并存储在字符串或字符中?

我猜你已经知道 C 字符和 Unicode 字符是两个非常不同的东西,所以我将跳过它。 我将在这里做出的假设包括:

  • 您的 C 字符串将包含 UTF-8 编码字符,以NUL ( \x00 ) 字符结尾。
  • 您不会使用任何可能破坏每个字符编码的 C 函数,并且您将使用 output( strlen()等),并了解您需要区分 Z0D61F8370CAD1D412F80B84D13E 和真实字符。

它真的很简单:

char input[256];
scanf("%[^\n]", &input);
printf("%s\n", input);

问题在于提供输入的内容以及显示 output 的内容。

#include <stdio.h>

int main(int argc, char** argv) {
  char* bananna = "\xF0\x9F\x8D\x8C\x00";
  printf("%s\n", bananna);
}

这可能不会显示香蕉。 这是因为写入终端的 UTF-8 序列不会被解释为 UTF-8 序列。

因此,您需要做的第一件事就是配置您的终端。 如果您的程序可能只使用一种终端类型,那么您甚至可以在程序中执行此操作; 然而,有很多人使用不同的终端,有些甚至跨越了操作系统的界限。 例如,我在 Windows 终端中测试我的 Linux 程序,该终端使用 Z7650353E6C87AC85AC29 连接到 Linux 系统

配置终端后,您可能已经正确的程序应该显示香蕉。 但是,即使是正确配置的终端也可能会失败。

验证终端配置正确后,最后一块拼图是字体。 并非所有 fonts 都包含所有 Unicode 字符的字形。 香蕉是通常不输入计算机的字符之一,因此您需要打开字体工具并在字体中搜索字形。 如果该字体中不存在,则需要找到一种为该字符实现字形的字体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM