在参考ISO 8859-1标准后,我发现字符£
的值为0xa3
,我想用c显示它,所以我写这个程序:
#include <stdio.h>
int main()
{
printf( "\\xa3 is: %c.\n", '\xa3' );
printf( "£ is: %c.\n", '£' );
return 0;
}
我将此源代码文件保存为iso 8859-1编码。我希望我的程序在£
符合每个printf
时显示%c
两次。
但是,它不起作用,为什么?如何修改我的程序以实现我的目标。
我正在使用linux。
修改
它的显示是这样的:
\xa3 is: �.
£ is: �.
答案 0 :(得分:2)
您的终端看起来好像是以UTF-8而不是8859-1运行。试试这个:
#include <stdio.h>
int main(void)
{
printf("\\xC2\\xA3 is: %s.\n", "\xC2\xA3");
printf("£ is: %s.\n", "£");
return 0;
}
在我的Mac上(终端以UTF-8运行),输出为:
\xC2\xA3 is: £.
£ is: £.
答案 1 :(得分:0)
您需要确保输出终端与您为此字符选择的encoding(随机)匹配。如果您使用的是ISO 8859-1,但您的终端期望例如UTF-8,您可能会得到一个结果,例如您正在看到的结果。