UTF-8变成压缩编码的,转换起来比较复杂. 
我写过一个函数,可以实现这个功能: 
CString UTF8toUnicode(char* s) 

int len = 0; 
WCHAR* r = new WCHAR[strlen(s) * 2]; 
while(s[0]) 

int bytes = 1; 
if(s[0] & 0x80) 
while(s[0] & (0x80 >> bytes)) bytes++; 
if(bytes == 1) 
r[len] = s[0]; 
else 

r[len] = 0; 
for(char*p = s + (bytes - 1); p > s; p--) 
r[len] |= ((*p) & 0x3F) << ((bytes - (p - s) - 1) * 6); 
r[len] |= (s[0] & ((1 << (7 - bytes)) - 1)) << ((bytes - 1) * 6); 

len++; 
s += bytes; 

r[len] = 0; 
char*buffer = new char[len * 2 + 1]; 
ZeroMemory(buffer, len * 2 + 1); 
::WideCharToMultiByte(CP_ACP, NULL, r, len, buffer, 1+ 2 * len, NULL, NULL); 
CString str = buffer; 
Delete[] r; 
delete[] buffer; 
return str; 

另外,如果要省事,直接用Windows自带的记事本另存为就能转了