/* * Japanese Detection and Converstion Functions */ #define HANKATA(A) ( (A >= 0xA1) && (A <= 0xDF)) // 半角カタカナ #define ISEUC(A) ( (A >= 0xA1) && (A <= 0xFE)) #define NOTEUC(A,B) (((A >= 0x81) && (A <= 0x9F)) && ((B >= 0x40) && (B <= 0xA0))) #define SJIS1(A) (((A >= 0x81) && (A <= 0x9F)) || ((A >= 0xE0) && (A <= 0xEF))) #define SJIS2(A) ( (A >= 0x40) && (A <= 0xFC)) #define ISMARU(A) ( (A >= 0xCA) && (A <= 0xCE)) // 半角パピプぺポ #define ISNIGORI(A) (((A >= 0xB6) && (A <= 0xC4)) || ((A >= 0xCA) && (A <= 0xCE))) //濁り ガ-ゴ ザ-ゾ ダ-ド バ-ボ static inline void jis2sjis(uchar *p1, uchar *p2) { uchar c1 = *p1; uchar c2 = *p2; int row = c1 < 0x5F ? 0x70 : 0xB0; int cell = c1 % 2 ? 0x1F + (c2 > 0x5F) : 0x7E; *p1 = (uchar)(((c1 + 1) >> 1) + row); *p2 = (uchar)(c2 + cell); } int JISToSJIS(const char *input, char *output) { int inpos, outpos, shifted = FALSE; uchar p1, p2; for (inpos = outpos = 0; input[