Unicode and ANSI
2017-07-27 19:16
369 查看
在电脑上新建一个文本文件,他默认是以ANSI格式编码的,所以在读取文件的时候,只能以多字节的方式来读取,
不能用宽字符来读取。但可以在另存为的时候,选择存储文件的编码格式,使用Unicode或者UTF-8的格式,
如果选用Unicode,那么就可以使用宽字符来读取文件,而不会出现乱码的情况。
下面是详细的代码:
不能用宽字符来读取。但可以在另存为的时候,选择存储文件的编码格式,使用Unicode或者UTF-8的格式,
如果选用Unicode,那么就可以使用宽字符来读取文件,而不会出现乱码的情况。
下面是详细的代码:
/************************************************************************/ /* read ini file(Multi Bytes) */ /************************************************************************/ void CMy07271Dlg::OnBnClickedButton1() { CFile file; if(!file.Open(_T("test.txt"), CFile::modeRead)) return ; char szBuf[64] = {0}; char szRes[1024] = {0}; // 如果此时调用strlen求字符串长度,结果为0,因为第一个字符就是结束符 int nszResLen = strlen(szRes); int nszBufLen = strlen(szBuf); while(1) { int nReadCount = file.Read(szBuf, 4); if(nReadCount > 0) { strcat(szRes, szBuf); memset(szBuf, 0, sizeof(szBuf)); } else break; } nszResLen = strlen(szRes); wchar_t* pszwRes = NULL; int nLenReq = MultiByteToWideChar(CP_ACP, 0, szRes, strlen(szRes), NULL, 0); pszwRes = new wchar_t[nLenReq + 1]; memset(pszwRes, 0, sizeof(wchar_t) * (nLenReq + 1)); MultiByteToWideChar(CP_ACP, 0, szRes, strlen(szRes), pszwRes, nLenReq); MessageBox(pszwRes, _T("title"), MB_OKCANCEL | MB_ICONINFORMATION); } /************************************************************************/ /* read txt file(Multi Bytes) */ /************************************************************************/ void CMy07271Dlg::OnBnClickedButton2() { CFile file; if(!file.Open(_T("test.txt"), CFile::modeRead)) return ; char szBuf[64] = {0}; char szRes[1024] = {0}; // 如果此时调用strlen求字符串长度,结果为0,因为第一个字符就是结束符 int nszResLen = strlen(szRes); int nszBufLen = strlen(szBuf); while(1) { int nReadCount = file.Read(szBuf, 4); if(nReadCount > 0) { strcat(szRes, szBuf); memset(szBuf, 0, sizeof(szBuf)); } else break; } nszResLen = strlen(szRes); // nszResLen != 0 wchar_t* pszwRes = NULL; int nLenReq = MultiByteToWideChar(CP_ACP, 0, szRes, strlen(szRes), NULL, 0); pszwRes = new wchar_t[nLenReq + 1]; memset(pszwRes, 0, sizeof(wchar_t) * (nLenReq + 1)); MultiByteToWideChar(CP_ACP, 0, szRes, strlen(szRes), pszwRes, nLenReq); MessageBox(pszwRes, _T("title"), MB_OKCANCEL | MB_ICONINFORMATION); } /************************************************************************/ /* Read Ini File(Unicode) */ /************************************************************************/ void CMy07271Dlg::OnBnClickedButton3() { CFile file(_T("test_Unicode.ini"), CFile::modeRead); wchar_t szBuf[64] = {0}; wchar_t szRes[1024] = {0}; int nBufLen = wcslen(szBuf); int nResLen = wcslen(szRes); while(1) { int nReadCount = file.Read(szBuf, 4); if(nReadCount > 0) { wcscat(szRes, szBuf); memset(szBuf, 0, sizeof(szBuf)); } else break; } MessageBox(szRes, _T("title"), MB_OKCANCEL | MB_ICONINFORMATION); } /************************************************************************/ /* Read Tex File(Unicode) */ /************************************************************************/ void CMy07271Dlg::OnBnClickedButton4() { CFile file(_T("test_Unicode.ini"), CFile::modeRead); wchar_t szBuf[64] = {0}; wchar_t szRes[1024] = {0}; int nBufLen = wcslen(szBuf); int nResLen = wcslen(szRes); while(1) { int nReadCount = file.Read(szBuf, 4); if(nReadCount > 0) { wcscat(szRes, szBuf); memset(szBuf, 0, sizeof(szBuf)); 4000 } else break; } MessageBox(szRes, _T("title"), MB_OKCANCEL | MB_ICONINFORMATION); }
相关文章推荐
- Generic Macro for UNICODE and ANSI
- KdPrint/DbgPrint and UNICODE_STRING/ANSI_STRING
- UnicodeToAnsi and AnsiToUnicode
- KdPrint/DbgPrint and UNICODE_STRING/ANSI_STRING
- ANSI and UnicodeCharacter and String Data Types
- KdPrint/DbgPrint and UNICODE_STRING/ANSI_STRING
- Unicode and ANSI
- ANSI(字符集) and Unicode(字符集) and UTF-8(编码Unicode字符集)
- 什么是Ansi,UTF8,Unicode,ASCII编码
- unicode,ansi,utf-8,unicode big endian编码的区别
- C++ UNICODE ANSI 类型转换 常用函数
- arcsde9.2中text的存储类型问题(unicode,varchar and nvarchar)
- unicode,ansi,utf-8,unicode big endian
- unicode和ansi的比较
- Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
- Unicode and Flash Player
- UNICODE与ANSI的区别
- ASCII ANSI Unicode UTF-8 UTF-16 GBK解释
- Ansi、Unicode、UTF-8字符串之间的转换和写入文本文件
- ANSI 和 Unicode 字符函数对照表