#include #include #include #include "cmsys/FStream.hxx" #ifdef _WIN32 # include "cmsys/ConsoleBuf.hxx" #endif #ifdef _WIN32 void setEncoding(cmsys::ConsoleBuf::Manager& buf, UINT codepage) { cmsys::ConsoleBuf* cb = buf.GetConsoleBuf(); if (cb) { cb->input_pipe_codepage = codepage; cb->output_pipe_codepage = codepage; cb->input_file_codepage = codepage; cb->output_file_codepage = codepage; cb->activateCodepageChange(); } } #endif int main(int argc, char* argv[]) { #ifdef _WIN32 cmsys::ConsoleBuf::Manager consoleOut(std::cout); #endif if (argc <= 2) { std::cout << "Usage: testEncoding " << std::endl; return 1; } const std::string encoding(argv[1]); #ifdef _WIN32 if ((encoding == "UTF8") || (encoding == "UTF-8")) { setEncoding(consoleOut, CP_UTF8); } else if (encoding == "ANSI") { setEncoding(consoleOut, CP_ACP); } else if (encoding == "OEM") { setEncoding(consoleOut, CP_OEMCP); } // else AUTO #endif cmsys::ifstream file(argv[2]); if (!file.is_open()) { std::cout << "Failed to open file: " << argv[2] << std::endl; return 2; } std::string text((std::istreambuf_iterator(file)), std::istreambuf_iterator()); std::cout << text; return 0; }