1 // mbtoutf8.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
11 char InBuffer[16384];
\r
12 char OutBuffer[65536];
\r
20 wchar_t UTF16Buffer[4];
\r
23 _tsetlocale(LC_ALL, _T(""));
\r
26 _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½C
\8c¾
\8cê
\83\
\81[
\83X
\83t
\83@
\83C
\83\8b\93à
\82Ì
\95¶
\8e\9a\97ñ
\83\8a\83e
\83\89\83\8b\82ðUTF-8
\82É
\83G
\83\93\83R
\81[
\83h
\82µ
\82Ü
\82·
\81B\n"));
\r
27 _tprintf(_T("
\83R
\83}
\83\93\83h
\83\89\83C
\83\93\n"));
\r
28 _tprintf(_T("mbtoutf8 [in] [out]\n"));
\r
29 _tprintf(_T("[in]
\8c³
\82Ì
\83\
\81[
\83X
\83t
\83@
\83C
\83\8b\82Ì
\83t
\83@
\83C
\83\8b\96¼\n"));
\r
30 _tprintf(_T("[out]
\95Û
\91¶
\90æ
\82Ì
\83t
\83@
\83C
\83\8b\96¼\n"));
\r
33 fpIn = _tfopen(argv[1], _T("rt"));
\r
36 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[1]);
\r
39 fpOut = _tfopen(argv[2], _T("wt"));
\r
42 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8dì
\90¬
\82Å
\82«
\82Ü
\82¹
\82ñ
\81B\n"), argv[2]);
\r
45 while(fgets(InBuffer, sizeof(InBuffer) / sizeof(char), fpIn))
\r
52 while(InBuffer[InPosition])
\r
54 Count = max(mblen(&InBuffer[InPosition], 4), 1);
\r
57 switch(InBuffer[InPosition])
\r
62 strncpy(&OutBuffer[OutPosition], &InBuffer[InPosition], Count);
\r
63 InPosition += Count;
\r
64 OutPosition += Count;
\r
70 strncpy(&OutBuffer[OutPosition], &InBuffer[InPosition], Count);
\r
71 InPosition += Count;
\r
72 OutPosition += Count;
\r
99 for(i = 0; i < Count; i++)
\r
101 sprintf(&OutBuffer[OutPosition], "\\x%02X", (unsigned char)InBuffer[InPosition]);
\r
108 strncpy(&OutBuffer[OutPosition], &InBuffer[InPosition], Count);
\r
109 InPosition += Count;
\r
110 OutPosition += Count;
\r
117 strncpy(&OutBuffer[OutPosition], &InBuffer[InPosition], Count);
\r
118 InPosition += Count;
\r
119 OutPosition += Count;
\r
129 UTF8Count = MultiByteToWideChar(CP_ACP, 0, &InBuffer[InPosition], Count, UTF16Buffer, sizeof(UTF16Buffer) / sizeof(wchar_t));
\r
130 UTF8Count = WideCharToMultiByte(CP_UTF8, 0, UTF16Buffer, UTF8Count, UTF8Buffer, sizeof(UTF8Buffer) / sizeof(char), NULL, NULL);
\r
131 InPosition += Count;
\r
132 for(i = 0; i < UTF8Count; i++)
\r
134 sprintf(&OutBuffer[OutPosition], "\\x%02X", (unsigned char)UTF8Buffer[i]);
\r
142 strncpy(&OutBuffer[OutPosition], &InBuffer[InPosition], Count);
\r
143 InPosition += Count;
\r
144 OutPosition += Count;
\r
148 OutBuffer[OutPosition] = '\0';
\r
149 fputs(OutBuffer, fpOut);
\r