您的位置:首页 > 运维架构

_tfopen_s UNICODE 解决乱码问题

2014-06-06 22:19 465 查看
使用_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, '\0', 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
{
fwrite(("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, '\0', 100);
fread(str, 1, sizeof(str), pFile);
MessageBox(str);
fclose(pFile);
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐