📄 mysqlnd_charset.c
字号:
return 0; } return (valid_sjis_head((uint)start[0]) && valid_sjis_tail((uint)start[1])) ? 2 : 0;}static uint mysqlnd_mbcharlen_sjis(uint sjis){ return (valid_sjis_head((uint)sjis)) ? 2 : 1;}/* }}} *//* {{{ ucs2 functions */static uint check_mb_ucs2(const char *start __attribute((unused)), const char *end __attribute((unused))){ return 2; /* always 2 */}static uint mysqlnd_mbcharlen_ucs2(uint ucs2){ return 2; /* always 2 */}/* }}} *//* {{{ ujis functions */#define valid_ujis(c) ((0xA1 <= ((c)&0xFF) && ((c)&0xFF) <= 0xFE))#define valid_ujis_kata(c) ((0xA1 <= ((c)&0xFF) && ((c)&0xFF) <= 0xDF))#define valid_ujis_ss2(c) (((c)&0xFF) == 0x8E)#define valid_ujis_ss3(c) (((c)&0xFF) == 0x8F)static uint check_mb_ujis(const char *start, const char *end){ if ((uint)start[0] < 0x80) { return 0; /* invalid ujis character */ } if (valid_ujis(*(start)) && valid_ujis(*((start)+1))) { return 2; } if (valid_ujis_ss2(*(start)) && valid_ujis_kata(*((start)+1))) { return 2; } if (valid_ujis_ss3(*(start)) && (end-start) > 2 && valid_ujis(*((start)+1)) && valid_ujis(*((start)+2))) { return 3; } return 0;}static uint mysqlnd_mbcharlen_ujis(uint ujis){ if (((ujis & 0xFF) >= 0xA1 && (ujis & 0xFF) <= 0xFE) || ((ujis & 0xFF) == 0x8E)) { return 2; } if ((ujis & 0xFF) == 0x8F) { return 3; } return 1;}/* }}} *//* {{{ mysqlnd_charsets */const MYSQLND_CHARSET mysqlnd_charsets[] ={ { 1, "big5","big5_chinese_ci", 1, 2, 0, mysqlnd_mbcharlen_big5, check_mb_big5}, { 3, "dec8", "dec8_swedisch_ci", 1, 1, 0, NULL, NULL}, { 4, "cp850", "cp850_general_ci", 1, 1, 0, NULL, NULL}, { 6, "hp8", "hp8_english_ci", 1, 1, 0, NULL, NULL}, { 7, "koi8r", "koi8r_general_ci", 1, 1, 0, NULL, NULL}, { 8, "latin1", "latin1_swedish_ci", 1, 1, 0, NULL, NULL}, { 9, "latin2", "latin2_general_ci", 1, 1, 0, NULL, NULL}, { 10, "swe7", "swe7_swedish_ci", 1, 1, 0, NULL, NULL}, { 11, "ascii", "ascii_general_ci", 1, 1, 0, NULL, NULL}, { 12, "ujis", "ujis_japanese_ci", 1, 3, 0, mysqlnd_mbcharlen_ujis, check_mb_ujis}, { 13, "sjis", "sjis_japanese_ci", 1, 2, 0, mysqlnd_mbcharlen_sjis, check_mb_sjis}, { 16, "hebrew", "hebrew_general_ci", 1, 1, 0, NULL, NULL}, { 18, "tis620", "tis620_thai_ci", 1, 1, 0, NULL, NULL}, { 19, "euckr", "euckr_korean_ci", 1, 2, 0, mysqlnd_mbcharlen_euckr, check_mb_eucjpms}, { 22, "koi8u", "koi8u_general_ci", 1, 1, 0, NULL, NULL}, { 24, "gb2312", "gb2312_chinese_ci", 1, 2, 0, mysqlnd_mbcharlen_gb2312, check_mb_gb2312}, { 25, "greek", "greek_general_ci", 1, 1, 0, NULL, NULL}, { 26, "cp1250", "cp1250_general_ci", 1, 1, 0, NULL, NULL}, { 28, "gbk", "gbk_chinese_ci", 1, 2, 0, mysqlnd_mbcharlen_gbk, check_mb_gbk}, { 30, "latin5", "latin5_turkish_ci", 1, 1, 0, NULL, NULL}, { 32, "armascii8", "armascii8_general_ci", 1, 1, 0, NULL, NULL}, { 33, "utf8", "utf8_general_ci", 1, 2, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 35, "ucs2", "ucs2_general_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 36, "cp866", "cp866_general_ci", 1, 1, 0, NULL, NULL}, { 37, "keybcs2", "keybcs2_general_ci", 1, 1, 0, NULL, NULL}, { 38, "macce", "macce_general_ci", 1, 1, 0, NULL, NULL}, { 39, "macroman", "macroman_general_ci", 1, 1, 0, NULL, NULL}, { 40, "cp852", "cp852_general_ci", 1, 1, 0, NULL, NULL}, { 41, "latin7", "latin7_general_ci", 1, 1, 0, NULL, NULL}, { 51, "cp1251", "cp1251_general_ci", 1, 1, 0, NULL, NULL}, { 57, "cp1256", "cp1256_general_ci", 1, 1, 0, NULL, NULL}, { 59, "cp1257", "cp1257_general_ci", 1, 1, 0, NULL, NULL}, { 63, "binary", "binary", 1, 1, 0, NULL, NULL}, { 92, "geostd8", "geostd8_general_ci", 1, 1, 0, NULL, NULL}, { 95, "cp932", "cp932_japanese_ci", 1, 2, 1, mysqlnd_mbcharlen_cp932, check_mb_cp932}, { 97, "eucjpms", "eucjpms_japanese_ci", 1, 3, 0, mysqlnd_mbcharlen_eucjpms, }, { 2, "latin2", "latin2_czech_cs", 1, 1, 0, NULL, NULL}, { 5, "latin1", "latin1_german_ci", 1, 1, 0, NULL, NULL}, { 14, "cp1251", "cp1251_bulgarian_ci", 1, 1, 0, NULL, NULL}, { 15, "latin1", "latin1_danish_ci", 1, 1, 0, NULL, NULL}, { 17, "filename", "filename", 1, 5, 1, NULL, NULL}, { 20, "latin7", "latin7_estonian_cs", 1, 1, 0, NULL, NULL}, { 21, "latin2", "latin2_hungarian_ci", 1, 1, 0, NULL, NULL}, { 23, "cp1251", "cp1251_ukrainian_ci", 1, 1, 0, NULL, NULL}, { 27, "latin2", "latin2_croatian_ci", 1, 1, 0, NULL, NULL}, { 29, "cp1257", "cp1257_lithunian_ci", 1, 1, 0, NULL, NULL}, { 31, "latin1", "latin1_german2_ci", 1, 1, 0, NULL, NULL}, { 34, "cp1250", "cp1250_czech_cs", 1, 1, 0, NULL, NULL}, { 42, "latin7", "latin7_general_cs", 1, 1, 0, NULL, NULL}, { 43, "macce", "macce_bin", 1, 1, 0, NULL, NULL}, { 44, "cp1250", "cp1250_croatian_ci", 1, 1, 0, NULL, NULL}, { 47, "latin1", "latin1_bin", 1, 1, 0, NULL, NULL}, { 48, "latin1", "latin1_general_ci", 1, 1, 0, NULL, NULL}, { 49, "latin1", "latin1_general_cs", 1, 1, 0, NULL, NULL}, { 50, "cp1251", "cp1251_bin", 1, 1, 0, NULL, NULL}, { 52, "cp1251", "cp1251_general_cs", 1, 1, 0, NULL, NULL}, { 53, "macroman", "macroman_bin", 1, 1, 0, NULL, NULL}, { 58, "cp1257", "cp1257_bin", 1, 1, 0, NULL, NULL}, { 60, "armascii8", "armascii8_bin", 1, 1, 0, NULL, NULL}, { 65, "ascii", "ascii_bin", 1, 1, 0, NULL, NULL}, { 66, "cp1250", "cp1250_bin", 1, 1, 0, NULL, NULL}, { 67, "cp1256", "cp1256_bin", 1, 1, 0, NULL, NULL}, { 68, "cp866", "cp866_bin", 1, 1, 0, NULL, NULL}, { 69, "dec8", "dec8_bin", 1, 1, 0, NULL, NULL}, { 70, "greek", "greek_bin", 1, 1, 0, NULL, NULL}, { 71, "hebew", "hebrew_bin", 1, 1, 0, NULL, NULL}, { 72, "hp8", "hp8_bin", 1, 1, 0, NULL, NULL}, { 73, "keybcs2", "keybcs2_bin", 1, 1, 0, NULL, NULL}, { 74, "koi8r", "koi8r_bin", 1, 1, 0, NULL, NULL}, { 75, "koi8u", "koi8u_bin", 1, 1, 0, NULL, NULL}, { 77, "latin2", "latin2_bin", 1, 1, 0, NULL, NULL}, { 78, "latin5", "latin5_bin", 1, 1, 0, NULL, NULL}, { 79, "latin7", "latin7_bin", 1, 1, 0, NULL, NULL}, { 80, "cp850", "cp850_bin", 1, 1, 0, NULL, NULL}, { 81, "cp852", "cp852_bin", 1, 1, 0, NULL, NULL}, { 82, "swe7", "swe7_bin", 1, 1, 0, NULL, NULL}, { 93, "geostd8", "geostd8_bin", 1, 1, 0, NULL, NULL}, { 83, "utf8", "utf8_bin", 1, 2, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 84, "big5", "big5_bin", 1, 2, 0, mysqlnd_mbcharlen_big5, check_mb_big5}, { 85, "euckr", "euckr_bin", 1, 2, 0, mysqlnd_mbcharlen_euckr, check_mb_euckr}, { 86, "gb2312", "gb2312_bin", 1, 2, 0, mysqlnd_mbcharlen_gb2312, check_mb_gb2312}, { 87, "gbk", "gbk_bin", 1, 2, 0, mysqlnd_mbcharlen_gbk, check_mb_gbk}, { 88, "sjis", "sjis_bin", 1, 2, 0, mysqlnd_mbcharlen_sjis, check_mb_sjis}, { 89, "tis620", "tis620_bin", 1, 1, 0, NULL, NULL}, { 90, "ucs2", "ucs2_bin", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 91, "ujis", "ujis_bin", 1, 3, 0, mysqlnd_mbcharlen_ujis, check_mb_ujis}, { 94, "latin1", "latin1_spanish_ci", 1, 1, 0, NULL, NULL}, { 96, "cp932", "cp932_bin", 1, 2, 1, mysqlnd_mbcharlen_cp932, check_mb_cp932}, { 99, "cp1250", "cp1250_polish_ci", 1, 1, 0, NULL, NULL}, { 98, "eucjpms", "eucjpms_bin", 1, 3, 0, mysqlnd_mbcharlen_eucjpms, check_mb_eucjpms}, { 128, "ucs2", "ucs2_unicode_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 129, "ucs2", "ucs2_icelandic_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 130, "ucs2", "ucs2_latvian_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 131, "ucs2", "ucs2_romanian_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 132, "ucs2", "ucs2_slovenian_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 133, "ucs2", "ucs2_polish_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 134, "ucs2", "ucs2_estonian_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 135, "ucs2", "ucs2_spanish_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 136, "ucs2", "ucs2_swedish_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 137, "ucs2", "ucs2_turkish_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 138, "ucs2", "ucs2_czech_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 139, "ucs2", "ucs2_danish_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 140, "ucs2", "ucs2_lithunian_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 141, "ucs2", "ucs2_slovak_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 142, "ucs2", "ucs2_spanish2_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 143, "ucs2", "ucs2_roman_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 144, "ucs2", "ucs2_persian_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 145, "ucs2", "ucs2_esperanto_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 146, "ucs2", "ucs2_hungarian_ci", 2, 2, 0, mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, { 192, "utf8", "utf8_general_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 193, "utf8", "utf8_icelandic_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 194, "utf8", "utf8_latvian_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 195, "utf8", "utf8_romanian_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 196, "utf8", "utf8_slovenian_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 197, "utf8", "utf8_polish_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 198, "utf8", "utf8_estonian_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 119, "utf8", "utf8_spanish_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 200, "utf8", "utf8_swedish_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 201, "utf8", "utf8_turkish_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 202, "utf8", "utf8_czech_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 203, "utf8", "utf8_danish_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8 }, { 204, "utf8", "utf8_lithunian_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8 }, { 205, "utf8", "utf8_slovak_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 206, "utf8", "utf8_spanish2_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 207, "utf8", "utf8_roman_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 208, "utf8", "utf8_persian_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 209, "utf8", "utf8_esperanto_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 210, "utf8", "utf8_hungarian_ci", 1, 3, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8}, { 254, "utf8", "utf8_general_cs", 1, 2, 0, mysqlnd_mbcharlen_utf8, check_mb_utf8 }, { 0, NULL, NULL, 0, 0, 0, NULL, NULL}};/* }}} *//* {{{ mysqlnd_find_charset_nr */const MYSQLND_CHARSET * mysqlnd_find_charset_nr(uint charsetnr){ const MYSQLND_CHARSET * c = mysqlnd_charsets; do { if (c->nr == charsetnr) { return c; } ++c; } while (c[0].nr != 0); return NULL;}/* }}} *//* {{{ mysqlnd_find_charset_name */const MYSQLND_CHARSET * mysqlnd_find_charset_name(const char * const name){ const MYSQLND_CHARSET *c = mysqlnd_charsets; do { if (!strcasecmp(c->name, name)) { return c; } ++c; } while (c[0].nr != 0); return NULL;}/* }}} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -