OSDN Git Service

Convert source codes' encoding to UTF-8.
[ffftp/ffftp.git] / encutf8 / encutf8.cpp
diff --git a/encutf8/encutf8.cpp b/encutf8/encutf8.cpp
new file mode 100644 (file)
index 0000000..ed73504
--- /dev/null
@@ -0,0 +1,63 @@
+// encutf8.cpp : \83R\83\93\83\\81[\83\8b \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\83G\83\93\83g\83\8a \83|\83C\83\93\83g\82ð\92è\8b`\82µ\82Ü\82·\81B
+//
+
+#include "stdafx.h"
+
+
+int _tmain(int argc, _TCHAR* argv[])
+{
+       FILE* fpIn;
+       FILE* fpOut;
+       fpos_t Length;
+       int InLength;
+       char* pInBuffer;
+       int UTF16Length;
+       wchar_t* pUTF16Buffer;
+       int OutLength;
+       char* pOutBuffer;
+       _tsetlocale(LC_ALL, _T(""));
+       if(argc != 3)
+       {
+               _tprintf(_T("\83}\83\8b\83`\83o\83C\83g\95\8e\9a\81i\83R\81[\83h\83y\81[\83W932\82Ü\82½\82ÍShift JIS\81j\82Å\8f\91\82©\82ê\82½\83e\83L\83X\83g\83t\83@\83C\83\8b\82ðUTF-8\82É\83G\83\93\83R\81[\83h\82µ\82Ü\82·\81B\n"));
+               _tprintf(_T("\83R\83}\83\93\83h\83\89\83C\83\93\n"));
+               _tprintf(_T("encutf8 [in] [out]\n"));
+               _tprintf(_T("[in]    \8c³\82Ì\83\\81[\83X\83t\83@\83C\83\8b\82Ì\83t\83@\83C\83\8b\96¼\n"));
+               _tprintf(_T("[out]   \95Û\91\90æ\82Ì\83t\83@\83C\83\8b\96¼\n"));
+               return 0;
+       }
+       fpIn = _tfopen(argv[1], _T("rb"));
+       if(!fpIn)
+       {
+               _tprintf(_T("\83t\83@\83C\83\8b\"%s\"\82ª\8aJ\82¯\82Ü\82¹\82ñ\81B\n"), argv[1]);
+               return 0;
+       }
+       fseek(fpIn, 0, SEEK_END);
+       fgetpos(fpIn, &Length);
+       fseek(fpIn, 0, SEEK_SET);
+       InLength = Length / sizeof(char);
+       pInBuffer = new char[InLength];
+       UTF16Length = InLength;
+       pUTF16Buffer = new wchar_t[InLength];
+       OutLength = InLength * 4;
+       pOutBuffer = new char[OutLength];
+       if(!pInBuffer || !pUTF16Buffer || !pOutBuffer)
+       {
+               _tprintf(_T("\83\81\83\82\83\8a\82ª\8am\95Û\82Å\82«\82Ü\82¹\82ñ\81B\n"));
+               return 0;
+       }
+       fread(pInBuffer, 1, InLength, fpIn);
+       fclose(fpIn);
+       fpOut = _tfopen(argv[2], _T("wb"));
+       if(!fpIn)
+       {
+               _tprintf(_T("\83t\83@\83C\83\8b\"%s\"\82ª\8dì\90¬\82Å\82«\82Ü\82¹\82ñ\81B\n"), argv[2]);
+               return 0;
+       }
+       fwrite("\xEF\xBB\xBF", 1, 3, fpOut);
+       UTF16Length = MultiByteToWideChar(CP_ACP, 0, pInBuffer, InLength / sizeof(char), pUTF16Buffer, UTF16Length);
+       OutLength = WideCharToMultiByte(CP_UTF8, 0, pUTF16Buffer, UTF16Length, pOutBuffer, OutLength / sizeof(char), NULL, NULL);
+       fwrite(pOutBuffer, sizeof(char), OutLength, fpOut);
+       fclose(fpOut);
+       return 0;
+}
+