Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1619733
  • 博文数量: 441
  • 博客积分: 20087
  • 博客等级: 上将
  • 技术积分: 3562
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-19 15:35
文章分类

全部博文(441)

文章存档

2014年(1)

2012年(1)

2011年(8)

2010年(16)

2009年(15)

2008年(152)

2007年(178)

2006年(70)

分类: C/C++

2010-07-21 18:28:35

很多人不知道如何将一个文本文件保存为UNICODE的, 下面的例子展示了如何使用windows api写一个UNICODE的文本文件:



#define UNICODE // comment this line if you want to compile as ansi


#include <windows.h>

int main()
{
    TCHAR szText[] = TEXT("C:\\Documents and Settings\\Administrator\\桌面\\中文.txt\n");
    DWORD dwBytesWrite;
    WORD magic = 0xFEFF;
    HANDLE hFile = CreateFile(TEXT("C:\\test.txt"), GENERIC_WRITE, FILE_SHARE_READ,
        NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if ( INVALID_HANDLE_VALUE == hFile )
        return -1;

#ifdef UNICODE
    WriteFile(hFile, &magic, sizeof(WORD), &dwBytesWrite, NULL);
#endif

    WriteFile(hFile, szText, lstrlen(szText) * sizeof(TCHAR), &dwBytesWrite, NULL);
    CloseHandle(hFile);

    return 0;
}


说明几点:
1) #define UNICODE 必须定义在#include 之前
2) 对于文本文件, 需要写入FF FE 两个字节以表示是UNICODE的
3) 如果将本程序的#define UNICODE去掉, 则保存的文件为ANSI版本的

author: thinker
e-mail: cnhnyugmail.com
qq: 94483026
阅读(1036) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~