--- postgresql-7.2.1/src/backend/utils/mb/wchar.c.org Mon May 27 20:02:44 2002 +++ postgresql-7.2.1/src/backend/utils/mb/wchar.c Mon May 27 20:03:12 2002 @@ -457,6 +457,33 @@ return (len); } +/* + * GB18030 + * Added by Bill Huang , + */ +static int +pg_gb18030_mblen(const unsigned char *s) +{ + int len; + + if (*s <= 0x7f) + { /* kanji? */ + len = 1; + } + else + { /* should be ASCII */ + + if((*(s+1) >0x40 && *(s+1) <= 0x7e) + || (*(s+1) >= 0x80 && *(s+1) <= 0xfe)) + len = 2; + else if(*(s+1) >0x30 && *(s+1) <= 0x39) + len = 4; + else + len = 2; + } + return (len); +} + pg_wchar_tbl pg_wchar_table[] = { {pg_ascii2wchar_with_len, pg_ascii_mblen, 1}, /* 0; PG_SQL_ASCII */ {pg_eucjp2wchar_with_len, pg_eucjp_mblen, 3}, /* 1; PG_EUC_JP */ @@ -483,6 +510,7 @@ {pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 22; ISO-8859-15 */ {pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 23; ISO-8859-16 */ {0, pg_sjis_mblen, 2}, /* 24; PG_SJIS */ + {0, pg_gb18030_mblen, 2}, /* 25; PG_GB18030 */ {0, pg_big5_mblen, 2}, /* 25; PG_BIG5 */ {pg_latin12wchar_with_len, pg_latin1_mblen, 1} /* 26; PG_WIN1250 */ };