⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iconvru.c

📁 Newlib 嵌入式 C库 标准实现代码
💻 C
📖 第 1 页 / 共 2 页
字号:
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 + -