我正在C中为一个项目制作一个程序,它将打印到文件的所有内容打印到控制台。问题是我必须打印一些特殊字符,如'Ç',所以我使用ascii代码,它打印到控制台很好,但它打印到文件是不正确的。这是一个例子:
printf(" %c", 128);
output to console: Ç
fprintf(output, " %c", 128);
output to file: €
我在cmd中运行命令chcp,它告诉我我正在使用代码页850并且我使用了那些asci代码,所以我不知道是什么问题。程序写入记事本txt文件。
答案 0 :(得分:2)
Ç
为128,这些编码有时被Windows控制台使用。代码页1252或1250中的相同代码128是€
,这是Windows图形应用程序经常使用的编码。唯一合理的方法是让您的控制台使用与图形应用程序相同的编码;为此,您可以在命令提示符下的控制台中使用命令chcp 1252
(ch
ange c
ode p
年龄。“
(注意:要使chcp
生效,控制台必须使用TrueType字体,例如Lucida Console或Consolas。)
答案 1 :(得分:1)
您的命令行(控制台)以及用于显示文件的任何内容都使用不同的编码。
两次写入128
字节,但在some Extended ASCII variant中(另请参阅Wikipedia),它被解释为带有cedilla的C,
而a common Windows encoding将其解释为欧元符号。