--- pgsql/src/backend/utils/mb/wchar.c.org Thu Jun 13 16:37:06 2002 +++ pgsql/src/backend/utils/mb/wchar.c Thu Jun 13 16:33:17 2002 @@ -510,6 +510,31 @@ return (len); } +/* + * * GB18030 + * * Added by Bill Huang , + * */ +static int +pg_gb18030_mblen(const unsigned char *s) +{ + int len; + if (*s <= 0x7f) + { /* ASCII */ + len = 1; + } + else + { + 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 */ @@ -544,6 +569,7 @@ {0, pg_gbk_mblen, 2}, /* 30; PG_GBK */ {0, pg_uhc_mblen, 2}, /* 31; PG_UHC */ {pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 32; PG_WIN1250 */ + {0, pg_gb18030_mblen, 2} /* 33; PG_GB18030 */ }; /* returns the byte length of a word for mule internal code */