I tried this:
AnsiString st,su,sx;
.
.
su="00a9" //value varies when called
TCHAR sx[10];
sx[0]=NULL;
su="0x"+su;
wsprintf(sx,"%c",su.ToInt());
st+=sx;
which seems to works for 0x00a9, but gives garbage for 0x5b89 (represents Chinese character) when viewed in TList or TMemo (Font and Font Name = MS Sans Serif.)
Any ideas why 0x5b89 is not showned correctly?