convertunicodetoutf8(const wchar *wstrin, byte *buff,int vlen)
{
assert(wstrin);
int wlen=wcslen(wstrin);
int i=0;
#define putchar(a) buff[i++]=(byte)a;
for(int j=0;(dword)j<wcslen(wstrin);j++)
{
assert(i<vlen);
wchar c=wstrin[j];
if (c < 0x80)
{
putchar (c);
}
else if (c < 0x800)
{
putchar (0xc0 | c>>6);
putchar (0x80 | c & 0x3f);
}
else if (c < 0x10000)
{
putchar (0xe0 | c>>12);
putchar (0x80 | c>>6 & 0x3f);
putchar (0x80 | c & 0x3f);
}
else if (c < 0x200000)
{
putchar (0xf0 | c>>18);
putchar (0x80 | c>>12 & 0x3f);
putchar (0x80 | c>>6 & 0x3f);
putchar (0x80 | c & 0x3f);
}
}
}
