1个文件中2种不同的文本编码[C]

时间:2014-07-25 15:08:54

标签: c encoding

好的新闻日 我执行学习任务,使用输入/输出文本处理文件。一般来说,该计划的重点是:

  1. 打开文件
  2. 编码的定义(在测试文件中我有ANSI,UTF-8,UTF-16)
  3. 解析文字
  4. 将结果输出到文件。
  5. 要使用文本,我使用char和wchar_t类型和函数WideCharToMultiByte()。问题是如果输入文件具有输出UTF-8UTF-16编码,则输出文件具有2种不同的编码。

    第一部分是输入文件中的copyng文本的结果。

    阅读输入文件

    while (!feof(file)) 
    {
        w = getwc(file);    
        wch_buffer[i] = w;  
        i++;
    }
    

    转换为char

    size = WideCharToMultiByte(CP_UTF8, 0, wch_buffer, -1, NULL, 0, NULL, NULL);    
    WideCharToMultiByte(CP_UTF8, 0, wch_buffer, -1, result, size, NULL, NULL);
    

    并添加到输出文件

    fputs(ch_buffer, OutPut);
    

    第二部分是解析器添加的文本。在这两种情况下都有西里尔符号。

    像那样的东西

    fprintf(OutPut,"\nОшибка. На строке %d обнаружен повторное открытие тега",Line);
    

    然后我在 Notepad ++ 中打开输出文件并更改编码。之后只有1部分文本可读(拉丁符号在两部分中都可读)。顺便说一下,在控制台中,一切都很好。 IDE VS2012

    1. http://i.imgur.com/BBNp8YL.png
    2. http://i.imgur.com/GNaP3Ay.png
    3. 2张图片显示了在 Notepad ++

      中更改编码的情况

      问题是1个文件中的2个编码,部分文本不可读。

0 个答案:

没有答案