1 // 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
\r
7 int _tmain(int argc, _TCHAR* argv[])
\r
15 wchar_t* pUTF16Buffer;
\r
18 _tsetlocale(LC_ALL, _T(""));
\r
21 _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"));
\r
22 _tprintf(_T("
\83R
\83}
\83\93\83h
\83\89\83C
\83\93\n"));
\r
23 _tprintf(_T("encutf8 [in] [out]\n"));
\r
24 _tprintf(_T("[in]
\8c³
\82Ì
\83\
\81[
\83X
\83t
\83@
\83C
\83\8b\82Ì
\83t
\83@
\83C
\83\8b\96¼\n"));
\r
25 _tprintf(_T("[out]
\95Û
\91¶
\90æ
\82Ì
\83t
\83@
\83C
\83\8b\96¼\n"));
\r
28 fpIn = _tfopen(argv[1], _T("rb"));
\r
31 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[1]);
\r
34 fseek(fpIn, 0, SEEK_END);
\r
35 fgetpos(fpIn, &Length);
\r
36 fseek(fpIn, 0, SEEK_SET);
\r
37 InLength = Length / sizeof(char);
\r
38 pInBuffer = new char[InLength];
\r
39 UTF16Length = InLength;
\r
40 pUTF16Buffer = new wchar_t[InLength];
\r
41 OutLength = InLength * 4;
\r
42 pOutBuffer = new char[OutLength];
\r
43 if(!pInBuffer || !pUTF16Buffer || !pOutBuffer)
\r
45 _tprintf(_T("
\83\81\83\82\83\8a\82ª
\8am
\95Û
\82Å
\82«
\82Ü
\82¹
\82ñ
\81B\n"));
\r
48 fread(pInBuffer, 1, InLength, fpIn);
\r
50 fpOut = _tfopen(argv[2], _T("wb"));
\r
53 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8dì
\90¬
\82Å
\82«
\82Ü
\82¹
\82ñ
\81B\n"), argv[2]);
\r
56 fwrite("\xEF\xBB\xBF", 1, 3, fpOut);
\r
57 UTF16Length = MultiByteToWideChar(CP_ACP, 0, pInBuffer, InLength / sizeof(char), pUTF16Buffer, UTF16Length);
\r
58 OutLength = WideCharToMultiByte(CP_UTF8, 0, pUTF16Buffer, UTF16Length, pOutBuffer, OutLength / sizeof(char), NULL, NULL);
\r
59 fwrite(pOutBuffer, sizeof(char), OutLength, fpOut);
\r