1 // utf8msg.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 EncodeText(char* pOut, const char* pIn, int Count)
\r
12 pInEnd = pIn + Count;
\r
43 sprintf(pOut, "\\x%02X", (unsigned char)*pIn);
\r
56 sprintf(pOut, "\\x%02X", (unsigned char)*pIn);
\r
69 return (int)((size_t)pOut - (size_t)pOutBegin);
\r
72 char* FindQuote(const char* pIn, int Count)
\r
76 pInEnd = pIn + Count;
\r
99 char* FindEndOfLine(const char* pIn, int Count)
\r
101 const char* pInEnd;
\r
102 pInEnd = pIn + Count;
\r
103 while(pIn < pInEnd)
\r
109 if(pIn < pInEnd && *pIn == '\r')
\r
111 if(pIn < pInEnd && *pIn == '\n')
\r
121 int _tmain(int argc, _TCHAR* argv[])
\r
139 _tsetlocale(LC_ALL, _T(""));
\r
142 _tprintf(_T("UTF-8
\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ð
\83G
\83\93\83R
\81[
\83h
\82µ
\82Ü
\82·
\81B\n"));
\r
143 _tprintf(_T("
\8ds
\92\86\82Å
\8dÅ
\8f\89\82É
\8fo
\8c»
\82·
\82é
\95¶
\8e\9a\97ñ
\83\8a\83e
\83\89\83\8b\82Í
\82»
\82Ì
\82Ü
\82Ü
\95Û
\8e\9d\82³
\82ê
\82Ü
\82·
\81B\n"));
\r
144 _tprintf(_T("
\8ds
\92\86\82Å2
\94Ô
\96Ú
\88È
\8d~
\82É
\8fo
\8c»
\82·
\82é
\95¶
\8e\9a\97ñ
\83\8a\83e
\83\89\83\8b\82Í
\8dÅ
\8f\89\82Ì
\82à
\82Ì
\82Å
\83G
\83\93\83R
\81[
\83h
\82³
\82ê
\82Ü
\82·
\81B\n"));
\r
145 _tprintf(_T("
\83R
\83}
\83\93\83h
\83\89\83C
\83\93\n"));
\r
146 _tprintf(_T("mbtoutf8 [in] [out]\n"));
\r
147 _tprintf(_T("[in]
\8c³
\82Ì
\83\
\81[
\83X
\83t
\83@
\83C
\83\8b\82Ì
\83t
\83@
\83C
\83\8b\96¼\n"));
\r
148 _tprintf(_T("[out]
\95Û
\91¶
\90æ
\82Ì
\83t
\83@
\83C
\83\8b\96¼\n"));
\r
151 fpIn = _tfopen(argv[1], _T("rb"));
\r
154 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[1]);
\r
157 if(fseek(fpIn, 0, SEEK_END) != 0)
\r
159 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[1]);
\r
162 InLength = ftell(fpIn);
\r
163 if(fseek(fpIn, 0, SEEK_SET) != 0)
\r
165 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[1]);
\r
168 pInBuffer = (char*)malloc(InLength);
\r
171 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[1]);
\r
174 if((long)fread(pInBuffer, 1, InLength, fpIn) != InLength)
\r
176 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[1]);
\r
179 OutLength = InLength * 4;
\r
180 pOutBuffer = (char*)malloc(OutLength);
\r
183 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[1]);
\r
188 pInEnd = pInBuffer + InLength;
\r
189 pOutEnd = pOutBuffer + OutLength;
\r
190 while(pIn < pInEnd)
\r
194 Count = (int)((size_t)pInEnd - (size_t)pIn);
\r
195 pInNext = FindEndOfLine(pIn, Count);
\r
196 while(pInQuote = FindQuote(pIn, (int)((size_t)pInNext - (size_t)pIn)))
\r
203 pIn = pInQuote + 1;
\r
204 pOut += EncodeText(pOut, pSrc, SrcCount);
\r
209 SrcCount = (int)((size_t)pInQuote - (size_t)pIn) + 1;
\r
210 Count = (int)((size_t)pInQuote - (size_t)pIn) + 1;
\r
211 memcpy(pOut, pIn, Count);
\r
219 Count = (int)((size_t)pInQuote - (size_t)pIn) + 1;
\r
220 memcpy(pOut, pIn, Count);
\r
225 Count = (int)((size_t)pInNext - (size_t)pIn);
\r
226 memcpy(pOut, pIn, Count);
\r
230 OutLength = (long)((size_t)pOut - (size_t)pOutBuffer);
\r
231 fpIn = _tfopen(argv[2], _T("rb"));
\r
234 if(fseek(fpIn, 0, SEEK_END) != 0)
\r
236 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[2]);
\r
239 InLength = ftell(fpIn);
\r
240 if(fseek(fpIn, 0, SEEK_SET) != 0)
\r
242 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[2]);
\r
245 pInBuffer = (char*)malloc(InLength);
\r
248 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[2]);
\r
251 if((long)fread(pInBuffer, 1, InLength, fpIn) != InLength)
\r
253 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ
\81B\n"), argv[2]);
\r
256 if(InLength == OutLength && memcmp(pInBuffer, pOutBuffer, InLength) == 0)
\r
258 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82Í
\95Ï
\8a·
\82Ì
\95K
\97v
\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B\n"), argv[2]);
\r
262 fpOut = _tfopen(argv[2], _T("wb"));
\r
265 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8dì
\90¬
\82Å
\82«
\82Ü
\82¹
\82ñ
\81B\n"), argv[2]);
\r
268 if((long)fwrite(pOutBuffer, 1, OutLength, fpOut) != OutLength)
\r
270 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82ª
\8dì
\90¬
\82Å
\82«
\82Ü
\82¹
\82ñ
\81B\n"), argv[2]);
\r
273 _tprintf(_T("
\83t
\83@
\83C
\83\8b\"%s\"
\82Í
\90³
\8fí
\82É
\95Ï
\8a·
\82³
\82ê
\82Ü
\82µ
\82½
\81B\n"), argv[2]);
\r