无法将扩展ASCII写入C中的文件

时间:2018-10-05 16:46:12

标签: c

我写了一个代码,写一个整数和一个迷宫,它们由三个字符,四个字符,一个逗号,一个句号,一个空格和一个块字符█(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。此外,一旦写入了错误解码的字符,读取文件时,终端将无法正确显示该字符

0 个答案:

没有答案