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

📄 utf8.c

📁 大名鼎鼎的远程登录软件putty的Symbian版源码
💻 C
📖 第 1 页 / 共 2 页
字号:
		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   ERROR,      /* (unexpected continuation byte) */		   0, -1);    utf8_read_test(TESTSTR("\xC0\x20\xC1\x20\xC2\x20\xC3\x20\xC4\x20\xC5\x20\xC6\x20\xC7\x20"),		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   0, -1);    utf8_read_test(TESTSTR("\xE0\x20\xE1\x20\xE2\x20\xE3\x20\xE4\x20\xE5\x20\xE6\x20\xE7\x20\xE8\x20\xE9\x20\xEA\x20\xEB\x20\xEC\x20\xED\x20\xEE\x20\xEF\x20"),		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   0, -1);    utf8_read_test(TESTSTR("\xF0\x20\xF1\x20\xF2\x20\xF3\x20\xF4\x20\xF5\x20\xF6\x20\xF7\x20"),		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   0, -1);    utf8_read_test(TESTSTR("\xF8\x20\xF9\x20\xFA\x20\xFB\x20"),		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   0, -1);    utf8_read_test(TESTSTR("\xFC\x20\xFD\x20"),		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   ERROR,      /* (incomplete sequence) */		   0x00000020, /* SPACE */		   0, -1);    utf8_read_test(TESTSTR("\xC0"),		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xE0\x80"),		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xF0\x80\x80"),		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xF8\x80\x80\x80"),		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xFC\x80\x80\x80\x80"),		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xDF"),		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xEF\xBF"),		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xF7\xBF\xBF"),		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xFB\xBF\xBF\xBF"),		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xFD\xBF\xBF\xBF\xBF"),		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xC0\xE0\x80\xF0\x80\x80\xF8\x80\x80\x80\xFC\x80\x80\x80\x80\xDF\xEF\xBF\xF7\xBF\xBF\xFB\xBF\xBF\xBF\xFD\xBF\xBF\xBF\xBF"),		   ERROR,      /* (incomplete sequence) */		   ERROR,      /* (incomplete sequence) */		   ERROR,      /* (incomplete sequence) */		   ERROR,      /* (incomplete sequence) */		   ERROR,      /* (incomplete sequence) */		   ERROR,      /* (incomplete sequence) */		   ERROR,      /* (incomplete sequence) */		   ERROR,      /* (incomplete sequence) */		   ERROR,      /* (incomplete sequence) */		   ERROR,      /* (incomplete sequence) */		   0, -1);    utf8_read_test(TESTSTR("\xFE"),		   ERROR,      /* (invalid UTF-8 byte) */		   0, -1);    utf8_read_test(TESTSTR("\xFF"),		   ERROR,      /* (invalid UTF-8 byte) */		   0, -1);    utf8_read_test(TESTSTR("\xFE\xFE\xFF\xFF"),		   ERROR,      /* (invalid UTF-8 byte) */		   ERROR,      /* (invalid UTF-8 byte) */		   ERROR,      /* (invalid UTF-8 byte) */		   ERROR,      /* (invalid UTF-8 byte) */		   0, -1);    utf8_read_test(TESTSTR("\xC0\xAF"),		   ERROR,      /* SOLIDUS (overlong form of 2F) */		   0, -1);    utf8_read_test(TESTSTR("\xE0\x80\xAF"),		   ERROR,      /* SOLIDUS (overlong form of 2F) */		   0, -1);    utf8_read_test(TESTSTR("\xF0\x80\x80\xAF"),		   ERROR,      /* SOLIDUS (overlong form of 2F) */		   0, -1);    utf8_read_test(TESTSTR("\xF8\x80\x80\x80\xAF"),		   ERROR,      /* SOLIDUS (overlong form of 2F) */		   0, -1);    utf8_read_test(TESTSTR("\xFC\x80\x80\x80\x80\xAF"),		   ERROR,      /* SOLIDUS (overlong form of 2F) */		   0, -1);    utf8_read_test(TESTSTR("\xC1\xBF"),		   ERROR,      /* <control> (overlong form of 7F) */		   0, -1);    utf8_read_test(TESTSTR("\xE0\x9F\xBF"),		   ERROR,      /* <no name available> (overlong form of DF BF) */		   0, -1);    utf8_read_test(TESTSTR("\xF0\x8F\xBF\xBF"),		   ERROR,      /* <no name available> (overlong form of EF BF BF) (invalid char) */		   0, -1);    utf8_read_test(TESTSTR("\xF8\x87\xBF\xBF\xBF"),		   ERROR,      /* <no name available> (overlong form of F7 BF BF BF) */		   0, -1);    utf8_read_test(TESTSTR("\xFC\x83\xBF\xBF\xBF\xBF"),		   ERROR,      /* <no name available> (overlong form of FB BF BF BF BF) */		   0, -1);    utf8_read_test(TESTSTR("\xC0\x80"),		   ERROR,      /* <control> (overlong form of 00) */		   0, -1);    utf8_read_test(TESTSTR("\xE0\x80\x80"),		   ERROR,      /* <control> (overlong form of 00) */		   0, -1);    utf8_read_test(TESTSTR("\xF0\x80\x80\x80"),		   ERROR,      /* <control> (overlong form of 00) */		   0, -1);    utf8_read_test(TESTSTR("\xF8\x80\x80\x80\x80"),		   ERROR,      /* <control> (overlong form of 00) */		   0, -1);    utf8_read_test(TESTSTR("\xFC\x80\x80\x80\x80\x80"),		   ERROR,      /* <control> (overlong form of 00) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xA0\x80"),		   ERROR,      /* <Non Private Use High Surrogate, First> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xAD\xBF"),		   ERROR,      /* <Non Private Use High Surrogate, Last> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xAE\x80"),		   ERROR,      /* <Private Use High Surrogate, First> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xAF\xBF"),		   ERROR,      /* <Private Use High Surrogate, Last> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xB0\x80"),		   ERROR,      /* <Low Surrogate, First> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xBE\x80"),		   ERROR,      /* <no name available> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xBF\xBF"),		   ERROR,      /* <Low Surrogate, Last> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xA0\x80\xED\xB0\x80"),		   ERROR,      /* <Non Private Use High Surrogate, First> (surrogate) */		   ERROR,      /* <Low Surrogate, First> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xA0\x80\xED\xBF\xBF"),		   ERROR,      /* <Non Private Use High Surrogate, First> (surrogate) */		   ERROR,      /* <Low Surrogate, Last> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xAD\xBF\xED\xB0\x80"),		   ERROR,      /* <Non Private Use High Surrogate, Last> (surrogate) */		   ERROR,      /* <Low Surrogate, First> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xAD\xBF\xED\xBF\xBF"),		   ERROR,      /* <Non Private Use High Surrogate, Last> (surrogate) */		   ERROR,      /* <Low Surrogate, Last> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xAE\x80\xED\xB0\x80"),		   ERROR,      /* <Private Use High Surrogate, First> (surrogate) */		   ERROR,      /* <Low Surrogate, First> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xAE\x80\xED\xBF\xBF"),		   ERROR,      /* <Private Use High Surrogate, First> (surrogate) */		   ERROR,      /* <Low Surrogate, Last> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xAF\xBF\xED\xB0\x80"),		   ERROR,      /* <Private Use High Surrogate, Last> (surrogate) */		   ERROR,      /* <Low Surrogate, First> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xED\xAF\xBF\xED\xBF\xBF"),		   ERROR,      /* <Private Use High Surrogate, Last> (surrogate) */		   ERROR,      /* <Low Surrogate, Last> (surrogate) */		   0, -1);    utf8_read_test(TESTSTR("\xEF\xBF\xBE"),		   ERROR,      /* <no name available> (invalid char) */		   0, -1);    utf8_read_test(TESTSTR("\xEF\xBF\xBF"),		   ERROR,      /* <no name available> (invalid char) */		   0, -1);    printf("read tests completed\n");    printf("write tests beginning\n");    {	const static long str[] =	{0x03BAL, 0x1F79L, 0x03C3L, 0x03BCL, 0x03B5L, 0};	utf8_write_test(TESTSTR(str),			0xCE, 0xBA,			0xE1, 0xBD, 0xB9,			0xCF, 0x83,			0xCE, 0xBC,			0xCE, 0xB5,			0, -1);    }    {	const static long str[] = {0x0000L, 0};	utf8_write_test(TESTSTR(str),			0x00,			0, -1);    }    {	const static long str[] = {0x0080L, 0};	utf8_write_test(TESTSTR(str),			0xC2, 0x80,			0, -1);    }    {	const static long str[] = {0x0800L, 0};	utf8_write_test(TESTSTR(str),			0xE0, 0xA0, 0x80,			0, -1);    }    {	const static long str[] = {0x00010000L, 0};	utf8_write_test(TESTSTR(str),			0xF0, 0x90, 0x80, 0x80,			0, -1);    }    {	const static long str[] = {0x00200000L, 0};	utf8_write_test(TESTSTR(str),			0xF8, 0x88, 0x80, 0x80, 0x80,			0, -1);    }    {	const static long str[] = {0x04000000L, 0};	utf8_write_test(TESTSTR(str),			0xFC, 0x84, 0x80, 0x80, 0x80, 0x80,			0, -1);    }    {	const static long str[] = {0x007FL, 0};	utf8_write_test(TESTSTR(str),			0x7F,			0, -1);    }    {	const static long str[] = {0x07FFL, 0};	utf8_write_test(TESTSTR(str),			0xDF, 0xBF,			0, -1);    }    {	const static long str[] = {0xFFFDL, 0};	utf8_write_test(TESTSTR(str),			0xEF, 0xBF, 0xBD,			0, -1);    }    {	const static long str[] = {0xFFFFL, 0};	utf8_write_test(TESTSTR(str),			ERROR,			0, -1);    }    {	const static long str[] = {0x001FFFFFL, 0};	utf8_write_test(TESTSTR(str),			0xF7, 0xBF, 0xBF, 0xBF,			0, -1);    }    {	const static long str[] = {0x03FFFFFFL, 0};	utf8_write_test(TESTSTR(str),			0xFB, 0xBF, 0xBF, 0xBF, 0xBF,			0, -1);    }    {	const static long str[] = {0x7FFFFFFFL, 0};	utf8_write_test(TESTSTR(str),			0xFD, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,			0, -1);    }    {	const static long str[] = {0xD7FFL, 0};	utf8_write_test(TESTSTR(str),			0xED, 0x9F, 0xBF,			0, -1);    }    {	const static long str[] = {0xD800L, 0};	utf8_write_test(TESTSTR(str),			ERROR,			0, -1);    }    {	const static long str[] = {0xD800L, 0xDC00L, 0};	utf8_write_test(TESTSTR(str),			ERROR,			ERROR,			0, -1);    }    {	const static long str[] = {0xDFFFL, 0};	utf8_write_test(TESTSTR(str),			ERROR,			0, -1);    }    {	const static long str[] = {0xE000L, 0};	utf8_write_test(TESTSTR(str),			0xEE, 0x80, 0x80,			0, -1);    }    printf("write tests completed\n");    printf("total: %d errors\n", total_errs);    return (total_errs != 0);}#endif /* TESTMODE */const charset_spec charset_CS_UTF8 = {    CS_UTF8, read_utf8, write_utf8, NULL};#else /* ENUM_CHARSETS */ENUM_CHARSET(CS_UTF8)#endif /* ENUM_CHARSETS */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -