C语言怎么在linux下写入中文

问题遇到的现象和发生背景

使用C语言在linux系统读写文件时,不能写入中文,也不能在前端读中文,都是乱码

问题相关代码,请勿粘贴截图
sscanf(Data,"Display=%[^&]&host=%[^&]&HostIP=%[^&]&remarks=%s",szTmpa, szTmpa1,szTmpa2, szTmpa3);
 
        FILE *fp = NULL;
 
        fp = fopen("111.txt","a+");
 
        fprintf(fp,"%s",szTmpa);
 
        fprintf(fp,"%s","|");
 
        fprintf(fp,"%s",szTmpa1);
 
        fprintf(fp,"%s","|");
 
        fprintf(fp,"%s",szTmpa2);
 
        fprintf(fp,"%s","|");
 
        fprintf(fp,"%s",szTmpa3);
 
        fprintf(fp,"\r\n");
        fflush(fp);
        fclose(fp);
 
        printf("%s%s%s%s",szTmpa,szTmpa1,szTmpa2,szTmpa3);


FILE *fp = NULL;
 
        char *str;
 
        char txt[1000];
        int filesize;
        fp = fopen("111.txt","a+");
        fseek(fp,0,SEEK_END);
        filesize = ftell(fp);
        str = (char *)malloc(filesize);
        str[0]=0;
        rewind(fp);
        while((fgets(txt,1000,fp))!=NULL){//循环读取1000字节,如果没有数据则退出循环
            strcat(str,txt);//拼接字符串
        }
        fflush(fp);
        fclose(fp);
        
          printf("%s",str);


运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

安装fictx