以下显示windows♣♥♦在Windows XP上,是否适用于所有系统?
#include <stdio.h>
int main(int argc, char *argv[])
{
for (int i = 3; i <= 6; ++i)
printf("%c", (char)i);
getchar();
return 0;
}
答案 0 :(得分:13)
不。根据我的经验,字符编码是一个非常依赖平台的。
在ASCII中考虑那些字符don't even exist。我不知道它们在Unicode中的位置。无论它们在哪里,您将依赖于您的平台如何输出Unicode。
答案 1 :(得分:12)
不,这些是ASCII中的control characters。您使用的CP437打印出来的终端,它是原始IBM PC的字符集。它对ASCII格式的字符使用相同的编号,但是带有重音字母,希腊字母,方框图字符和一些装饰符号的扩展ASCII。不用说,它完全不便携;您的程序只能在Windows命令终端中运行,而不能在任何其他系统上运行;这些字符甚至无法在更常见的Windows编码CP1252中正常工作。
如果您想要移植打印特殊字符,您应该使用Unicode这是一个通用字符集,其中卡适合0x2660–0x2667。有关Unicode的高级概述,请参阅The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。
请注意,启用应用程序使用Unicode的方式因Unix和Windows而异,您仍然需要在不同的编码之间进行转换,因为Unicode具有more than one encoding(包括部分编码,例如作为遗留字符集),但至少你可以使用相同的通用字符集,无论你使用的是什么平台或正在使用的编码。
答案 2 :(得分:7)
套装的Unicode和UTF-8:
Mac OS X角色搜索调色板FTW。
代码可能看起来很混乱,但有一种方法。 0x2660..0x2663是标准四,白色而不是红色(♠♡♢♣),而0x2660..0x2663是相同的颜色倒置(♤♥♦♧)。
P.S。不是试图破坏双关语的乐趣,但我认为有人会想要一个答案“好吧,标准方法应该是什么?”
答案 3 :(得分:3)
打印出不常用的控制字符(这是低值)(如'\ n')会在不同平台上产生不同的结果。
跨平台的一种方法是Unicode(套装在game symbols page上,虽然通常不支持字体中的这些字符。