设为首页 加入收藏

TOP

C++如何生成utf-8编码的文件
2013-11-20 14:23:19 来源: 作者: 【 】 浏览:108
Tags:如何 生成 utf-8 编码 文件

  c++如何生成utf-8编码的文件呢?

  步骤如下:

  1.首先要写一个BOM头。UTF-8文件一般是要这个头的,当然也可以没有。

  2.将要生成的字符先使用宽字符格式生成,然后调用WideCharToMultiByte转为utf-8编码,写入文件。

  例子如下:

  [cpp]viewplaincopyprint

  FILE*pFile=fopen("d://a.txt","w");

  charszBOM ={(char)0xEF,(char)0xBB,(char)0xBF,0};

  fprintf(pFile,"%s",szBOM);

  wchar_tchNum[11]=L"零壹贰叁肆伍陆柒捌玖";

  wchar_tchNum2 =L"亿千百拾万千百拾个";

  charsz ="112304823";

  wchar_tresult[32]=L"";

  intoffset=0;

  for(inti=0;i<strlen(sz);++i)

  {

  charc=sz[i];

  wchar_tw1=chNum[c-'0'];

  wchar_tw2=chNum2[i];

  swprintf(result+offset,L"%c%c",w1,w2);

  offset+=2;

  }

  charszChar[64]="";

  ::WideCharToMultiByte(CP_UTF8,0,result,wcslen(result),szChar,64,0,0);

  fprintf(pFile,"%s",szChar);

  fclose(pFile);

  FILE * pFile = fopen("d://a.txt", "w");

  char szBOM = {(char)0xEF, (char)0xBB, (char)0xBF, 0};

  fprintf(pFile, "%s", szBOM);

  wchar_t chNum[11] = L"零壹贰叁肆伍陆柒捌玖";

  wchar_t chNum2 = L"亿千百拾万千百拾个";

  char sz = "112304823";

  wchar_t result[32] = L"";

  int offset = 0;

  for(int i = 0;

  i < strlen(sz); ++ i) { char c = sz[i];

  wchar_t w1 = chNum[ c - '0'];

  wchar_t w2 = chNum2[i];

  swprintf(result + offset, L"%c%c", w1, w2);

  offset += 2;

  } char szChar[64] = "";

  ::WideCharToMultiByte(CP_UTF8, 0, result, wcslen(result), szChar, 64, 0, 0);

  fprintf(pFile, "%s", szChar);

  fclose(pFile);

  注意的是,当使用wchar_t而不再是char时,所有的字符串操作函数都需要时w系列的,例如wcslen、swprintf

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++文件流打开方式的使用 下一篇VC++自定义对话框程序界面图标

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: