■ 数値文字参照のHTMLに変換
/*
* ncr.c : 数値文字参照のHTMLに変換
*
* Copyright (c) 2000, 2001 AOK.
*
* 2001.03.21 - 初版
*
* 【使い方】ncr 入力ファイル名 出力ファイル名
*
* 数値文字参照( Numeric Character References。略してNCR )
* は非ASCII文字をASCII文字で表すというHTML文書で用いられる
* エスケープ法。
*/
/* --- 変換後 -------------------------
<html>
<body>
<p>こんな感じになります。アイウエオ</p>
<p>半角カナは バビブベボ</p>
</body>
</html>
-------------------------------------- */
#include <windows.h>
#include <stdio.h>
#include <mbstring.h>
#include <mbctype.h>
int main(int argc, char *argv[])
{
FILE *fpi, *fpo;
char buf[2];
WORD wc;
int i, c, type = _MBC_SINGLE;
if (argc > 1)
fpi = fopen(argv[1], "rt");
else /* エラー */
return 1;
if (argc > 2)
fpo = fopen(argv[2], "wt");
else /* エラー */
return 1;
while ((c = getc(fpi)) != EOF)
{
type = _mbbtype(c, type);
switch (type)
{
case _MBC_LEAD:
buf[0] = (char)c;
break;
case _MBC_TRAIL:
buf[1] = (char)c;
MultiByteToWideChar(932, 0, buf, 2, &wc, 1);
fprintf(fpo, "&#%u;", wc);
break;
default:
if (_ismbbkana(c))
{
buf[0] = (char)c;
MultiByteToWideChar(932, 0, buf, 1, &wc, 1);
fprintf(fpo, "&#%u;", wc);
}
else
fputc(c, fpo);
break;
}
}
fclose(fpi);
fclose(fpo);
return 0;
}