Pocket Pc模拟器汉字编码的问题
我最近写程序,因为wince 用的是unicode码,所以,我从文件读出来的ascii码要进行转换,我觉得转换过程没有问题,但是转换的结果是,汉字显示出来的是乱码,西文都是正常的,不知道是模拟器的问题,还是其他的问题,我把程序下装到pda却可以正常显示汉字,有谁哟这方面的经验可一指点一下吗
用的主要代码:
BOOL CvtBufToStru(void* pBuf, int nBufSize, PDATAFIELD pDF, int nDFcount, void* pStru, int nStruSize) {
char field[256];
char* pc;
PDATAFIELD pItem;
void* pData;
pData=pBuf;
int nCopyLen;
if (nBufSize<2) return FALSE;
if (CalcDFActualLength(pDF, nDFcount) != nStruSize) {
DebugError(TEXT("Invalid size in CvtBufToStru"));
return FALSE;
}
pc = (char*)pBuf;
if ((pc[nBufSize-1]!=0x0A) || (pc[nBufSize-2]!=0x0D)) {
DebugError(TEXT("Data structure error in CvtBufToStr"));
TCHAR szTemp[256];
wsprintf(szTemp, TEXT("structure:\n%s"),(LPCTSTR)pData);
MessageBox(0, szTemp, TEXT("Debug"), 0);
return FALSE;
}
pData = pStru;
for (int i=0; i<nDFcount; i++) {
pItem = pDF + i;
memcpy(&field[0], pc, pItem->AsciiLength);
field[pItem->AsciiLength] = '\0';
TrimStr(&field[0]);
switch (pItem->FieldType) {
case FT_CHAR:
nCopyLen = (pItem->AsciiLength==1)?1:-1;
if (!MultiByteToWideChar(CP_ACP, 0, &field[0], nCopyLen, (LPWSTR)pData,
pItem->ActualLength/sizeof(TCHAR)))
MessageBox(0, TEXT("MultiByteToWideChar failed"),
TEXT("Debug"), 0);
if (pItem->AsciiLength >1) {
((LPWSTR)pData)[pItem->ActualLength/sizeof(TCHAR)-1] =L'\0';
//MessageBox(0, (LPWSTR)pData, TEXT("Debug"), 0);
}
break;
case FT_TINYINT:
case FT_SMALLINT:
case FT_INT:
if (field[0])
*(short*)pData = atoi(&field[0]);
else
*(short*)pData = 0;
break;
}
pc = pc + pItem->AsciiLength;
pData = (char*)pData + pItem->ActualLength;
}
return TRUE;
}
是不是模拟器中部识别16位的汉字编码呢,如果是,我给怎么能让汉字在模拟器中正常的显示出来呢