📄 iconvru.c
字号:
char utf8[] ={ 0xd0,0x9e,0xd0,0xbf,0xd0,0xb5,0xd1,0x80,0xd0,0xb0, 0xd1,0x82,0xd0,0xbe,0xd1,0x80,0xd1,0x8b,0x20,0xd0, 0xb2,0x20,0xd0,0xbe,0xd0,0xb4,0xd0,0xbd,0xd0,0xbe, 0xd0,0xb9,0x20,0xd1,0x81,0xd1,0x82,0xd1,0x80,0xd0, 0xbe,0xd0,0xba,0xd0,0xb5,0x20,0xd0,0xb8,0xd0,0xbc, 0xd0,0xb5,0xd1,0x8e,0xd1,0x82,0x20,0xd0,0xbe,0xd0, 0xb4,0xd0,0xb8,0xd0,0xbd,0xd0,0xb0,0xd0,0xba,0xd0, 0xbe,0xd0,0xb2,0xd1,0x8b,0xd0,0xb9,0x20,0xd0,0xbf, 0xd1,0x80,0xd0,0xb8,0xd0,0xbe,0xd1,0x80,0xd0,0xb8, 0xd1,0x82,0xd0,0xb5,0xd1,0x82,0x0a,0xd0,0xa1,0xd1, 0x82,0xd1,0x80,0xd0,0xbe,0xd0,0xba,0xd0,0xb8,0x20, 0xd1,0x83,0xd0,0xbf,0xd0,0xbe,0xd1,0x80,0xd1,0x8f, 0xd0,0xb4,0xd0,0xbe,0xd1,0x87,0xd0,0xb5,0xd0,0xbd, 0xd1,0x8b,0x20,0xd0,0xbf,0xd0,0xbe,0x20,0xd1,0x83, 0xd0,0xb1,0xd1,0x8b,0xd0,0xb2,0xd0,0xb0,0xd0,0xbd, 0xd0,0xb8,0xd1,0x8e,0x20,0xd0,0xbf,0xd1,0x80,0xd0, 0xb8,0xd0,0xbe,0xd1,0x80,0xd0,0xb8,0xd1,0x82,0xd0, 0xb5,0xd1,0x82,0xd0,0xbe,0xd0,0xb2,0x2e,0x0a,0x0a, 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x20,0xd0,0x92, 0xd1,0x8b,0xd0,0xbf,0xd0,0xbe,0xd0,0xbb,0xd0,0xbd, 0xd0,0xb5,0xd0,0xbd,0xd0,0xb8,0xd0,0xb5,0x20,0x2d, 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x28, 0x29,0x20,0x20,0x5b,0x5d,0x20,0x20,0x2d,0x3e,0x20, 0x20,0x2e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d, 0x3e,0x0a,0x21,0x20,0x20,0x20,0x7e,0x20,0x20,0x20, 0x2b,0x2b,0x20,0x20,0x2d,0x2d,0x20,0x20,0x2b,0x20, 0x20,0x2d,0x20,0x20,0x2a,0x20,0x20,0x26,0x20,0x20, 0x28,0x74,0x79,0x70,0x65,0x29,0x20,0x20,0x73,0x69, 0x7a,0x65,0x6f,0x66,0x20,0x20,0x20,0x20,0x20,0x20, 0x2d,0x2d,0x2d,0x3e,0x0a,0x2a,0x20,0x20,0x2f,0x20, 0x20,0x25,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x2d,0x2d,0x2d,0x3e,0x0a,0x2b,0x20, 0x20,0x2d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x3e, 0x0a,0x3c,0x3c,0x20,0x20,0x3e,0x3e,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d, 0x2d,0x2d,0x3e,0x0a,0x3c,0x20,0x20,0x3c,0x3d,0x20, 0x20,0x3e,0x20,0x20,0x3e,0x3d,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x2d,0x2d,0x2d,0x3e,0x0a,0x3d,0x3d,0x20, 0x20,0x21,0x3d,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x3e,0x0a, 0x26,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d, 0x2d,0x3e,0x0a,0x5e,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x2d,0x2d,0x2d,0x3e,0x0a,0x7c,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x3e,0x0a,0x26, 0x26,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d, 0x3e,0x0a,0x7c,0x7c,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x2d,0x2d,0x2d,0x3e,0x0a,0x3f,0x3a,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x3c,0x2d,0x2d,0x2d,0x20,0x20,0x20, 0x0a,0x3d,0x20,0x20,0x2b,0x3d,0x20,0x20,0x2d,0x3d, 0x20,0x20,0x2f,0x3d,0x20,0x20,0x25,0x3d,0x20,0x20, 0x26,0x3d,0x20,0x20,0x5e,0x3d,0x20,0x20,0x7c,0x3d, 0x20,0x20,0x3c,0x3c,0x3d,0x20,0x20,0x3e,0x3e,0x3d, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, 0x2d,0x2d,0x2d,0x0a,0x2c,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x2d,0x2d,0x2d,0x3e,0x0a};#endifstruct iconv_data{ int len; char *name; char *data;};#define CONVERSIONS 3struct iconv_data data[] = {#ifdef _ICONV_CONVERTER_ISO_8859_5 {sizeof(iso_8859_5), "ISO-8859-5", (char *)iso_8859_5},#endif#ifdef _ICONV_CONVERTER_KOI8_R {sizeof(koi8_r), "KOI8-R", (char *)koi8_r},#endif#ifdef _ICONV_CONVERTER_UTF_8 {sizeof(utf8), "UTF-8", (char *)utf8},#endif {0, NULL, NULL}};#define OUTBUF_LEN 1500char ob[OUTBUF_LEN];iconv_t descs[CONVERSIONS*CONVERSIONS];#define ERROR 0int main(int argc, char **argv){ int i, j, k, d = 0; size_t n; char *outbuf, *inbuf; int conversions = sizeof(data)/sizeof(struct iconv_data) - 1; puts("RU iconv test"); for (i = 0; i < conversions; i++) { for (j = 0; j < conversions; j++) { descs[d] = iconv_open(data[j].name, data[i].name); if (descs[d++] == (iconv_t)-1) { printf("iconv_open(%s, %s)\n", data[i].name, data[j].name); perror(""); CHECK(ERROR); } } } d = 0; for (i = 0; i < conversions; i++) { for (j = 0; j < conversions; j++) { size_t inbytes = data[i].len; size_t outbytes = OUTBUF_LEN; inbuf = data[i].data; outbuf = (char *)ob; if (iconv(descs[d], NULL, NULL, (char **)&outbuf, &outbytes) == (size_t)-1) { perror("Can't reset shift state"); CHECK(ERROR); } n = iconv(descs[d++], (const char **)&(inbuf), &inbytes, (char **)&outbuf, &outbytes); if (n == (size_t)-1) { printf("Conversion from %s to %s FAILED - iconv() " "returned -1\n", data[i].name, data[j].name); perror(""); CHECK(ERROR); } if (data[j].len != OUTBUF_LEN - outbytes) { printf("Conversion from %s to %s FAILED", data[i].name, data[j].name); printf(" - bad output buffer length (%d instead of %d)\n", OUTBUF_LEN - outbytes, data[j].len); CHECK(ERROR); } for (k = 0; k < data[j].len; k++) { if (ob[k] != data[j].data[k]) { printf("Conversion from %s to %s FAILED", data[i].name, data[j].name); printf("Error: byte %d is wrong\n", k); printf("outbuf value: %#x, inbuf value %#x, " "right value: %#x\n", (int)ob[k], (int)(data[i].data[k]), (int)(data[j].data[k])); CHECK(ERROR); } } printf("iconv from %s to %s was successfully done\n", data[i].name, data[j].name); } } d = 0; for (i = 0; i < conversions; i++) for (j = 0; j < conversions; j++) CHECK(iconv_close(descs[d++]) != -1); exit(0);}#else /* #if defined(_ICONV_CONVERTER_UTF_8) || ... */int main(int argc, char **argv){ puts("None of ISO-8859-5, KOI8-R and UTF-8 converters linked, SKIP test"); exit(0);}#endif /* #if defined(_ICONV_CONVERTER_UTF_8) || ... */#else /* #ifdef _ICONV_ENABLED */int main(int argc, char **argv){ puts("iconv library is disabled, SKIP test"); exit(0);}#endif /* #ifdef _ICONV_ENABLED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -