无法在“C”程序中打印欧元符号

4
我无法打印欧元符号。我使用的程序如下。
我已将字符集设置为代码页1250,其中0x80代表欧元符号。
程序
=======
#include <stdio.h>
#include <locale.h>

int main()
{
    printf("Current locale is: %s\n", setlocale (LC_ALL, ".1250"));
    printf("Euro character: %c\n", 0x80);
    getchar();
    return 0;
}

输出
======
当前语言环境为:English_India.1250
欧元符号: ?

其他细节
=============
操作系统: Windows Vista
编译器: vc++ 2008 express edition

3个回答

3
请阅读以下内容:

http://www.columbia.edu/~em36/wpdos/eurodos.html

这里有几个部分可以帮助您:
  • 在Windows NT、2000或XP中的全屏DOS和命令控制台中显示欧元符号
  • 在Windows 2000和XP中的DOS和命令控制台窗口中显示欧元符号(支持TrueType字体)
  • 在Windows 2000和XP中的DOS和命令控制台中显示欧元符号(位图和TrueType字体)
请注意,不要删除任何HTML标签。

2
这是正确的答案,需要更改控制台字体。此外,您必须调用SetConsoleCP()来切换控制台代码页,setlocale()无法完成此操作。 - Hans Passant
谢谢。您需要设置控制台的输入和输出代码页,即使用SetConsoleCP()和SetOutputConsoleCP()函数。请参考以下链接: http://msdn.microsoft.com/en-us/library/ms683169%28VS.85%29.aspx http://msdn.microsoft.com/en-us/library/ms686013%28VS.85%29.aspx - Abhijith Madhav

3

0x80字符被错误地标记为欧元符号,实际上它是填充字符。

参见此处:http://bugs.mysql.com/bug.php?id=28263

如果我没记错的话,应该在0x120左右,可以尝试使用for循环从120到130进行打印。


1
欧元符号的0x80代码在Windows 1250和Windows 1252代码页中是正确的。 - Abhijith Madhav

1
#include <stdio.h>

int main()
{
 printf("\u20AC");
return 0;
}

我使用了GCC编译器,它可以很好地工作。输出为: €


这只适用于C++和C99


我想使用非Unicode字符集打印出“€”。正如SLA80所指出的那样,问题出在Windows控制台上。无论如何,感谢您。 - Abhijith Madhav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接