我写了一个代码,写一个整数和一个迷宫,它们由三个字符,四个字符,一个逗号,一个句号,一个空格和一个块字符█(ASCII 219)组成。 除█外的所有内容均已正确写入,并且在写入的文件中█被Û替换。 我尝试使用与█相同的Unicode字符\ u2588,但获得了输出Γûê。
printf("Enter a size : ");
scanf("%d",&SIZE);
initializeM(SIZE);
srand(time(NULL));
carvePath(1,1); // just for checking
*(m + (0*grid) + 1) = '.'; //source
*(m + (2*SIZE*grid) + 2*SIZE - 1) = ','; // destination
displayM();
printf("Writing to a file ...\n");
FILE *f;
f = fopen("output.txt","w");
if(f != NULL){
fprintf(f, "%d\n", SIZE);
for(int i = 0; i < grid; ++i){
for(int j = 0; j < grid; ++j){
fprintf(f, "%c", *(m + (i*grid) + j));
}
fprintf(f, "%c", '\n');
}
fprintf(f, "\u2588\n");
printf("Writing to file successful, saved to output.txt\n");
} else {
printf("Error Writing to file\n");
}
printf("\u2588\n");
fclose(f);
free(m);
我该怎么做才能将█正确写入文件中? 请注意,我已经编写了使用此文件的代码,因此使用unicode而不是ASCII将严重影响我的代码逻辑。
EDIT:语句fprintf(f, "\u2588")
可以很好地写入文件,但是在读取文件并将其显示在终端中时,该字符将显示为Γûê。
简而言之,写入文件可以愉快地接受unicode,但不接受ASCII 219。
终端愉快地接受ascii 219,但不接受unicode u2588。此外,一旦写入了错误解码的字符,读取文件时,终端将无法正确显示该字符