@楊彬: 1,把抓取到的文字显示到你的UI上,就能看出来是否正确。
2,我不知道log4cplus是怎么处理中文的,我只说一个关于如何在非中文操作系统下正确读写INI的例子,我假设项目字符集是UNICODE,同时项目中使用LPCTSTR来表示字符串,并且假设此字符串中的中文字符是正确的,如下:
LPCTSTR lpszText = _T("中文"); // 由于是写在代码中的,那么lpszText肯定包含正确的中文字符。
现在要写入INI文件,由于默认的API创建的INI文件在非中文操作系统下无法正确对中文字符编码,所以我在调用 WritePrivateProfileString 之前,先手动创建一个正确的 INI 文件,如下:
HRESULT hr = ::SHPathPrepareForWrite(NULL,NULL,lpszINIFileName,SHPPFW_DIRCREATE |SHPPFW_IGNOREFILENAME);if(hr != S_OK) returnhr;//INI 能够正确识别的 UNICODE 字符集为 UTF16-little Endian,//但是由 WritePrivateProfileString 自动创建的文件是 ANSI 编码,//所以我们通过编码方式创建带有正确 BOM 信息并能够识别中文//字符的 INI 文件。//UTF16-LE BOM(FFFE)
WORD wBOM = 0xFEFF;
DWORD dwWritten;
TCHAR szComment[MAX_PATH]=_T(";**********************************************************\r\n")</