首页 > 解决方案 > 我的代码的输出文件中出现了奇怪的字符

问题描述

我在 dev-c++ 的控制台上得到了正常的输出结果,但是代码将 stange 字符(即 UTF16-LE 格式)写入 a_b_768.txt 文件。奇怪的是:当我对另一个代码执行相同的文件输出过程时,我在文件中得到了正常(UTF8)的结果,没有任何问题。

为什么我得到一个代码的 UTF16 输出文件和另一个代码的 UTF8 输出文件?编译器相同,标头相同,过程相同,但一个代码在文件上写入 UTF 16,另一个在文件上写入 UTF8。我只是添加了以下问题的代码:

我怎样才能解决这个问题?有没有办法修改代码以在我的文件中获取 UTF8 输出?

#include <time.h>
#include<stdlib.h>
#include <stdio.h>

int main(){
    int a[768];
    int b[768];
    int i;
    
    /////////////////////////////////////////writing into a_b_768.txt
    FILE *outFile;
    outFile = fopen("a_b_768.txt", "w");

    if (outFile == NULL){
        printf("Cannot Open File\n");
        exit (0);
    }   

    for ( i = 0;i < 768;++i)
    {
        a[i]=rand()%3;
        fprintf(outFile,"%d ", a[i]);
    }   
    
    //fprintf(outFile,"\n\n");
    for ( i = 0;i < 768;++i)
    {
        b[i]=rand()%3;
        fprintf(outFile,"%d ", b[i]);
    }
    
    // fprintf(outFile,"\n\n\n\n");
    fclose(outFile);
    
    ///////////////////////////////////printing on console
    for ( i = 0;i < 768;++i)
    {
        a[i]=rand()%3;
        printf("%d ", a[i]);
    }   
    
    printf("\n\n");
    
    for ( i = 0;i < 768;++i)
    {
        b[i]=rand()%3;
        printf("%d ", b[i]);
    }   
    
}   

标签: cutf-8compilationutf-16fileoutputstream

解决方案


推荐阅读