[英]How to read banana (🍌) from console in C?
我已经尝试了很多方法来做到这一点.. 使用scanf()
, getc()
,但没有任何效果。 大多数时候,0 存储在提供的变量中(可能表示输入错误?)。 我怎样才能使当用户输入任何 Unicode 代码点时,它可以被正确识别并存储在字符串或字符中?
我猜你已经知道 C 字符和 Unicode 字符是两个非常不同的东西,所以我将跳过它。 我将在这里做出的假设包括:
NUL
( \x00
) 字符结尾。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.