读书人

关于vc utf-8编码的有关问题

发布时间: 2012-02-25 10:01:48 作者: rapoo

关于vc utf-8编码的问题,请教大家
我有一个变量CString str;

对str进行utf-8编码,str结果如下:“釜浜翠涓”

然后定义一个新的变量CString myurl;

myurl = str + "&sss";


myurl的值为“釜浜翠涓?sss”


请问为什么会出现“?”?


如果把代码改成 myurl = "&sss" + str;

那么就完全正确。


请问错误在什么地方??

[解决办法]
UTF8 to ansi:

const int BUF_SIZE=1024;
WCHAR szUnicode[BUF_SIZE];
char szAnsi[BUF_SIZE];

nWCHAR=MultiByteToWideChar(CP_UTF8,0,szUTF,nSize,szUnicode,BUF_SIZE);
nSize=WideCharToMultiByte(CP_ACP,0,szUnicode,nWCHAR,szAnsi,BUF_SIZE,NULL,NULL);

[解决办法]
5楼的代码你试过了吗?
const int BUF_SIZE=1024;
WCHAR szUnicode[BUF_SIZE];
char szAnsi[BUF_SIZE];
strcpy(szAnsi,"这里是你要转换成utf8的中英文混合字串");

nWCHAR=MultiByteToWideChar(CP_UTF8,0,szUTF,nSize,szUnicode,BUF_SIZE);

[解决办法]
不是多了问号,asc编码中每个字符的长度是不定的,unicode中是固定的,你把“&sss”放在前面,按照asc码打印出来,“&sss”因为采用的就是asc编码,所以解释正确,之后跟着的Unicode也按照asc码解释,所以全是乱码,最后碰到结束符(0x00)结束。当“&sss”放到Unicode的后面,“&”被与前面的字符结合起来解释,所以变成了“?”

读书人网 >VC/MFC

热点推荐