关于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的后面,“&”被与前面的字符结合起来解释,所以变成了“?”