y2k*_*y2k 4 c c++ character-encoding
以下显示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;
}
Run Code Online (Sandbox Code Playgroud)
GMa*_*ckG 13
不.根据我的经验,字符编码是一个非常依赖平台的.
考虑一下,在ASCII中,这些字符甚至不存在.我不知道它们在Unicode中的位置.无论它们在哪里,您都将依赖于您的平台如何输出Unicode.
Bri*_*ell 12
不,这些是ASCII 中的控制字符.您使用的CP437打印出的终端,CP437是原始IBM PC的字符集.它对ASCII格式的字符使用相同的编号,但使用带重音字母,希腊字母,方框图字符和一些装饰字符的扩展ASCII.不用说,它完全不便携; 您的程序只能在Windows命令终端中运行,而不能在任何其他系统上运行; 这些字符在更常见的Windows编码CP1252中甚至无法正常工作.
如果要打印出特殊字符,则应使用Unicode,这是一种通用字符集,其中卡适用于0x2660-0x2667.有关Unicode的高级概述,请参阅绝对最低每个软件开发人员,绝对必须知道关于Unicode和字符集(没有借口!).
请注意,如何使您的应用程序使用Unicode在Unix和Windows之间有所不同,并且您仍然需要在不同编码之间进行转换,因为Unicode具有多个编码(包括部分编码,例如遗留字符集),但至少您可以工作无论你使用什么平台或编码你使用相同的通用字符集.
适用于西装的Unicode和UTF-8:
Mac OS X角色搜索调色板FTW.
它可能看起来像代码混合,但有一种方法.0x2660..0x2663是标准四,白色而不是红色(♠♡♢♣),而0x2660..0x2663是相同的颜色反转设置(♤♥♦♧).
PS不要试图破坏双关语的乐趣,但我想有人会想要一个答案"好吧,标准的方式应该是什么?"
归档时间: |
|
查看次数: |
5535 次 |
最近记录: |