繁体   English   中英

如何在C和Linux中打印黑桃,心形,菱形等?

[英]How to print spades, hearts, diamonds, etc. in C and Linux?

因此,我首先放置了一个char char符号数组[52] = {'\\ x03','\\ x04'等。 等),而我第一次这样做,实际上确实打印出了心形,黑桃色等。但是,在将系统语言环境更改为韩语(如果是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   "\xE2\x99\xA0"
   #define CLUB    "\xE2\x99\xA3"
   #define HEART   "\xE2\x99\xA5"
   #define DIAMOND "\xE2\x99\xA6"
#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("A\u2660");

例如,应打印“ A”和黑桃符号。

在Linux上:

  1. 验证您的区域设置是否设置为<somelanguage>_<SOMEPLACE>.UTF-8 (在终端中键入locale )。
  2. 在网络上查找Unicode图表。 确认您可以用鼠标复制有趣的字符并将其粘贴到终端。
  3. 了解什么是UTF-8。
  4. 编写程序。
  5. 如果它不起作用,请使用诸如“如何在Linux中打印utf-8”之类的字词搜索此站点。 有成千上万的相关答案。 您希望按照语言标准在程序的开头调用setlocale(LC_ALL, "") ,并使用char而不是wchar_t

在Windows上:

  1. 放弃并哭泣。 不完全是。
  2. 在控制台中键入chcp 65001 不完全是!
  3. 将控制台字体设置为Lucida。 不完全是!!!
  4. 复制您的Linux程序并编译并运行它。 (您确实想在两个OS上使用相同的程序源,对吗?)如果该程序不起作用,请在线搜索解决方案。
  5. 转到1。

暂无
暂无

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

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