首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-02-25 
关于vc utf-8编码的问题,请教大家我有一个变量CString str对str进行utf-8编码,str结果如下:“鏉備釜浜嗗緱

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

热点排行