亲宝软件园·资讯

展开

C++生成UTF8编码文件的方法 C++使用WideCharToMultiByte函数生成UTF-8编码文件的方法

pizzq 人气:7
想了解C++使用WideCharToMultiByte函数生成UTF-8编码文件的方法的相关内容吗,pizzq在本文为您仔细讲解C++生成UTF8编码文件的方法的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:C++,UTF-8,Unicode,字符串,下面大家一起来学习吧。

WideCharToMultiByte函数映射一个unicode字符串到一个多字节字符串。

函数原型:

int WideCharToMultiByte

参数:
CodePage:指定执行转换的代码页,这个参数可以为系统已安装或有效的任何代码页所给定的值。你也可以指定其为下面的任意一值:

相关变量

生成utf-8编码的文件
步骤如下:
1. 首先要写一个BOM头。UTF-8文件一般是要这个头的,当然也可以没有。
2. 将要生成的字符先使用宽字符格式生成,然后调用WideCharToMultiByte转为utf-8编码,写入文件。

例子如下:

FILE * pFile = fopen("d://a.txt", "w"); 
  char szBOM[4] = {(char)0xEF, (char)0xBB, (char)0xBF, 0}; 
  fprintf(pFile, "%s", szBOM); 
   
  wchar_t chNum[11] = L"零壹贰叁肆伍陆柒捌玖"; 
  wchar_t chNum2[10] = L"亿千百拾万千百拾个"; 
  char sz[10] = "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

加载全部内容

相关教程
猜你喜欢
用户评论