|
本帖最后由 tzbm123456 于 2015-10-28 08:36 编辑
使用_tfopen_s和fopen_s时,稍不注意就会出现乱码问题;
_tfopen_s函数对应的CCS设置为UNICODE, UTF-8, andUTF-16LE均可打开编码为Unicode, UTF-8和Unicode big endian的.txt文件,不可打开编码为ANSI的.txt文件。
void CFileView::OnWrite() { // TODO: Add your command handler code here FILE *pFile = 0; if (!_tfopen_s(&pFile, TEXT("111.txt"), TEXT("w,ccs=UNICODE"))) //写入txt文件编码默认为ANSI { fwrite(TEXT("Today is the first day of NBA final game!"), 1, sizeof(TEXT("Today is the first day of NBA final game!")), pFile); } //fseek(pFile, 0, SEEK_CUR); //fwrite("Today is the first day of NBA final game!", 1, //sizeof("Today is the first day of NBA final game!")+2, pFile); fclose(pFile); //fflush(pFile); } void CFileView::OnOpen() { // TODO: Add your command handler code here FILE *pFile; if (!_tfopen_s(&pFile, TEXT("111.txt"), TEXT("r,ccs=UNICODE"))) //打开文件 { TCHAR str[100] = {0}; //memset(str, '', 100); fread(str, 1, sizeof(str), pFile); MessageBox(str); fclose(pFile); } }
fopen_s函数可以打开ANSI,Unicode,UTF-8, Unicode big endian编码的.txt文件,但fwrite要加上TEXT();且操作完成后,.txt文件都保存为Unicode编码的。
void CFileView::OnWrite()</span>
{ // TODO: Add your command handler code here FILE *pFile = 0;
if (!fopen_s(&pFile, ("1.txt"), ("w"))) //写入txt文件编码默认为ANSI
{
write(("Today is the first day of NBA final game!"), 1,sizeof(("Today is the first day of NBA final game!")), pFile);
} //fseek(pFile, 0, SEEK_CUR); //fwrite("Today is the first day of NBA final game!", 1, //sizeof("Today is the first day of NBA final game!")+2, pFile); fclose(pFile); //fflush(pFile); } void CFileView::OnOpen() { // TODO: Add your command handler code here FILE *pFile; if (!fopen_s(&pFile, ("1.txt"), ("r"))) //打开文件 { TCHAR str[100] = {0}; //memset(str, '', 100); fread(str, 1, sizeof(str), pFile); MessageBox(str); fclose(pFile); } }
|
|