I have multiple .txt files with the encoding format ANSI in a folder named folder1. I need convert it all to UTF-8 encoding type files in another empty folder with the name folder2.
I don't want to convert the files one by one - I want to convert them all at a time.
            Asked
            
        
        
            Active
            
        
            Viewed 273 times
        
    -3
            
            
         
    
    
        Antti Haapala -- Слава Україні
        
- 129,958
- 22
- 279
- 321
 
    
    
        user3783092
        
- 1
- 1
- 
                    At least tell us the language or operating system you want to do this on...?! – deceze Jun 27 '14 at 12:35
- 
                    This [topic][1] will help you to solve your issue. [1]: http://stackoverflow.com/questions/64860/best-way-to-convert-text-files-between-character-sets – Perfect28 Jun 27 '14 at 12:38
1 Answers
0
            
            
        use MultiByteToWideChar() with CP_ACP to convert data to WideChar and then use WideCharToMultiByte() with CP_UTF8 to convert in utf8 if we are talking about c++
static int to_utf8EncodeFile(std::wstring filePath)
{
    int error_code = 0;
    //read text file which will be in ANSI encoding type
    std::string fileName(filePath.begin(), filePath.end());
    std::string fileContent;
    fileContent = readFile(fileName.c_str());
    if(fileContent.empty())
    {
        return GetLastError();
    }
    int wchars_num =  MultiByteToWideChar( CP_ACP , 0 , fileContent.c_str() , -1, NULL , 0 );
    wchar_t* wstr = new wchar_t[wchars_num];
    error_code = MultiByteToWideChar( CP_ACP , 0 , fileContent.c_str() , -1, wstr , wchars_num );
    if(error_code == 0)
    {
        delete [] wstr;
        return GetLastError();
    }
    int size_needed = WideCharToMultiByte(CP_UTF8 , 0, &wstr[0], -1, NULL, 0, NULL, NULL);
    std::string strTo( size_needed, 0 );
    error_code = WideCharToMultiByte(CP_UTF8 , 0, &wstr[0], -1 , &strTo[0], size_needed, NULL, NULL);
    delete [] wstr;
    if(error_code == 0)
    {
        return GetLastError();
    }
    //Write utf-8 file
    std::ofstream utf_stream(filePath.c_str()); 
    utf_stream << strTo.c_str();
    utf_stream.close();
    return error_code;
    }
Above code converts single ANSI file to UTF8 , you can use CP_UTF16 any you want , Hope code will helpfull
 
    
    
        Dipak
        
- 672
- 3
- 9
- 26