2995|4

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ASC向Unicode转化时遇到无效字符后产生乱码 [复制链接]

我的转化函数如下:
        int iLen = ::MultiByteToWideChar(CP_ACP, 0, pBuff, -1, NULL, 0);
        if(iLen && iLen <= m_iReadLength){
                ::MultiByteToWideChar(CP_ACP, 0, pBuff, -1, m_pBuff, iLen);
        } else {
                ::MultiByteToWideChar(CP_ACP, 0, pBuff, m_iReadLength, m_pBuff, m_iReadLength);
        }
       
如果遇到无效字符时,iLen为0,我强制读取m_iReadLength长度的字符。接着读后面字符时全是乱码,请问如何解决。

最新回复

非常感谢xmlv(xmlv),就是使用这个方法。  详情 回复 发表于 2007-3-28 20:39
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
::MultiByteToWideChar(...)

你的这个是不是不只读?也做了手脚了??
读错误字符,就没必要再读下去了,就报告给用户出错就完了

再强行读取,只能造成错误的累加.
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我先从文件中读取char型字符放到BUFF中,然后再将这个BUFF转化成Unicode。可能是因为我读了半个汉字,就是这个过程产生了无效字符。那这个应该如何规避?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
                for(i =0;i                 {
                        if( ( (*pGbk<0x80) &&
                                   ((*(pGbk+1)>0x80) && (*(pGbk+2)>0x80))  
                                 )
                                || (*(pGbk+1)<0x80)
                           )        //ascii
                        {
                                *pUni++ = *pGbk++;
                                *pUni++ = 0x00;
                        }                  

                        else
                        {

                            (*(_WORD*)pUni) = HL_Gbk2Unicode((*(_WORD*)pGbk));
                               
                            pUni += 2;
                            pGbk += 2;
                            i++;               
                        }
                }
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
非常感谢xmlv(xmlv),就是使用这个方法。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表