如何在 C 和 Linux 中打印黑桃、心形、钻石等

  • 本文关键字:心形 钻石 打印 Linux c linux
  • 更新时间 :
  • 英文 :


所以我首先放置了一个字符数组字符符号[52] = { '\x03' , '\x04', etc.)我第一次这样做时,它实际上确实打印了心形、黑桃等,但是在将我的系统区域设置更改为韩语区域设置后(如果这是导致它的原因,idk),它开始给我奇怪的符号与它无关。我也尝试在另一台计算机上执行此操作,它实际上正确编译了符号。但是,后来我尝试将其移动到linux上,它打印了带有0 0 0 3的奇怪方块。

谁知道为什么会出现这些符号,或者有更好的方法来打印这些符号?

PS:我在Windows中使用Visual Studio,然后在Linux中使用.c代码

Linux 系统通常使用 UTF-8 编码,其中:

  • ♠ = U+2660 = "\xE2\x99\xA0"
  • ♣ = U+2663 = "\xE2\x99\xA3"
  • ♥ = U+2665 = "\xE2\x99\xA5"
  • ♦ = U+2666 = "\xE2\x99\xA6"

编辑:不幸的是,Windows命令提示符不支持UTF-8,但使用旧的DOS代码页。 如果你想让你的程序跨平台工作,你必须做一些事情:

#if defined(_WIN32) || defined(__MSDOS__)
   #define SPADE   "x06"
   #define CLUB    "x05"
   #define HEART   "x03"
   #define DIAMOND "x04"
#else
   #define SPADE   "xE2x99xA0"
   #define CLUB    "xE2x99xA3"
   #define HEART   "xE2x99xA5"
   #define DIAMOND "xE2x99xA6"
#endif

'x03这样的字符是控制字符x03特别是键入 Control-C 时获得的字符(尽管键入该字符通常具有其他效果)。

某些字体碰巧分配图像以控制字符。据我所知,这样做没有标准。显然,在您之前的配置中,某些控制字符恰好显示为扑克牌花色符号。

这些符号有标准的 Unicode 字符:

2660  BLACK SPADE SUIT
2661  WHITE HEART SUIT
2662  WHITE DIAMOND SUIT
2663  BLACK CLUB SUIT
2664  WHITE SPADE SUIT
2665  BLACK HEART SUIT
2666  BLACK DIAMOND SUIT
2667  WHITE CLUB SUIT

(数字以十六进制表示。

不同的

系统以不同的方式对 Unicode 进行编码。Windows通常使用某种形式的UTF-16。Linux 通常使用 UTF-8,但您可以通过设置区域设置来改变它。

如果您的 Linux 终端字符集像往常一样设置为 UTF-8,那么您应该能够显示您拥有字体的所有 Unicode 字形。西装符号位于 \u2660 附近。

printf("Au2660");

例如,应该打印"A"和黑桃符号。

在 Linux 上:

  1. 验证您的区域设置是否设置为 <somelanguage>_<SOMEPLACE>.UTF-8(在术语中键入 locale)。
  2. 在网络上查找 Unicode 图表。验证您是否可以使用鼠标复制感兴趣的字符并将其粘贴到三元组。
  3. 了解什么是 UTF-8。
  4. 编写一个程序。
  5. 当它不起作用时,使用诸如"如何在 Linux 中打印 utf-8"之类的东西搜索此站点。有成吨的答案。您希望按照语言标准的要求在程序开始时调用setlocale(LC_ALL, ""),并使用char,而不是wchar_t

在视窗上:

  1. 放弃和哭泣。不,真的。
  2. 在控制台中键入 chcp 65001。不,真的!
  3. 将控制台字体设置为 Lucida。不,真的!!
  4. 复制你的 Linux 程序并编译并运行它。(您确实希望在两个操作系统上使用相同的程序源,对吗?当它不起作用时,请在线搜索解决方案。
  5. 转到 1。

最新更新