*** postgresql-7.0.3/src/backend/utils/mb/conv.c.orig Sat May 20 22:12:26 2000 --- postgresql-7.0.3/src/backend/utils/mb/conv.c Fri Nov 17 14:10:12 2000 *************** *** 906,920 **** { len -= pg_mic_mblen(mic++); ! if (c1 == LC_CNS11643_1 || c1 == LC_CNS11643_2) { *p++ = *mic++; *p++ = *mic++; } else if (c1 == 0x9d) { /* LCPRV2? */ *p++ = SS2; ! *p++ = c1 - LC_CNS11643_3 + 0xa3; *p++ = *mic++; *p++ = *mic++; } --- 906,927 ---- { len -= pg_mic_mblen(mic++); ! if (c1 == LC_CNS11643_1) { *p++ = *mic++; *p++ = *mic++; } + else if (c1 == LC_CNS11643_2) + { + *p++ = SS2; + *p++ = 0xa2; + *p++ = *mic++; + *p++ = *mic++; + } else if (c1 == 0x9d) { /* LCPRV2? */ *p++ = SS2; ! *p++ = *mic++ - LC_CNS11643_3 + 0xa3; *p++ = *mic++; *p++ = *mic++; } *************** *** 941,947 **** unsigned short big5buf, cnsBuf; unsigned char lc; ! char bogusBuf[2]; int i; while (len > 0 && (c1 = *big5++)) --- 948,954 ---- unsigned short big5buf, cnsBuf; unsigned char lc; ! char bogusBuf[3]; int i; while (len > 0 && (c1 = *big5++)) *** postgresql-7.0.3/src/interfaces/libpq/fe-connect.c.orig Mon May 22 06:19:53 2000 --- postgresql-7.0.3/src/interfaces/libpq/fe-connect.c Fri Nov 17 14:10:12 2000 *************** *** 1505,1514 **** { const char *env; - /* query server encoding */ env = getenv(envname); if (!env || *env == '\0') { if (!PQsendQuery(conn, "select getdatabaseencoding()")) goto error_return; --- 1505,1515 ---- { const char *env; env = getenv(envname); if (!env || *env == '\0') { + /* query server encoding if PGCLIENTENCODING + is not specified */ if (!PQsendQuery(conn, "select getdatabaseencoding()")) goto error_return; *************** *** 1516,1521 **** --- 1517,1535 ---- conn->setenv_state = SETENV_STATE_ENCODINGS_WAIT; return PGRES_POLLING_READING; } + else + { + /* otherwise set client encoding in pg_conn struct */ + int encoding = pg_char_to_encoding(env); + if (encoding < 0) + { + strcpy(conn->errorMessage.data, + "PGCLIENTENCODING has no valid encoding name.\n"); + goto error_return; + } + conn->client_encoding = encoding; + } + } case SETENV_STATE_ENCODINGS_WAIT: