首页 > 编程知识 正文

zh_cn.utf-8和us_en.utf-8区别,ansi格式是什么意思

时间:2023-05-03 09:26:53 阅读:151127 作者:2549

1 //char.h2 //头文件3 //结构文件定义,文件信息存储4 //结构初始化函数和其他函数定义

5

6 # ifndef _ h _ char _7# define _ h _ char _

8

9 #包含

10 #包含

11 #包含

12 #包括

13

14 unsigned char BOM[]={0xEF,0xBB,0xBF}; 带//BOM的UTF-8编码文件以这三个字符开头15

16 //File结构的定义

17 typedefstructfile { 18 char * filename; 19字符文件模式; 20字符编码; 21布尔读; 22 )文件; 23

24 //函数定义

25文件*初始化文件(char*,char*; //结构初始化

26boolisutf8(char*; //判断文件是否为UTF-8编码格式

27boolisreadable(char*; 确定filemode是否支持可读选项

28boolcharinstring(char,char *; //判断字符串中是否有字符

29语音打印(file *; //打印结构的内容

30 voidfprintinfo (文件*; //打印结构信息

31 voiddeconstructfile (文件*; //分析结构

32 voidfprintansi (文件*; 33 //以Ansi格式打印变换函数定义

34voidconvert(constchar*strin,char* strOut,int sourceCodepage,inttargetCodepage ); 35voidutf82ansi(pcharsrc,PCHAR Dst ); 36voidansi2utf8(pcharsrc,PCHAR Dst; 37

38 //函数实现

39文件*初始化文件(char * filename,char *filemode ) 40 ) 41文件* file=(file * ) malloc ) sizeof )文件; 42文件-文件名称=文件名称; 43文件-文件模式=文件模式; 44文件编码=' ansi '; 45文件读=假; 46

47if (is utf8 (文件名称) ) 48 (49文件编码=' utf-8 ' ); 50 ) 51

52if (is readable (文件) ) 53 ) 54文件- readable=true; 55 ) 56

57返回文件; (59 ) 59

60boolisutf8(char*filename(61 ) file*FP=fopen ) filename,' r ' ); 63

64if(FP==null ) 65 { 66打印(unabletoopenfile % s (n ),filename ); 67返回假; (69 ) 69

70 unsigned char * buffer=(unsigned char * ) malloc ) sizeof(unsignedchar ) * 3); 71前端(buffer,3,3,fp ); 72fclose(FP; 73

74for(intI=0; i 3; I(75 ) 76if ) buffer[I]!=BOM[I](77 ) 78返回假; 79 80 81

82返回真; 83 ) 84

85boolisreadable(char*filemode ) 86 ) 87if ) charinstring )、filemode )、filemode )、filemode ) 88 )。 90 ) 91返回假; 92 ) 93

94boolcharinstring(charch,char *str ) 95 ) 96while ) str!=‘‘) 97{98if(ch==*str ) 99 { 100返回真; 101 ) 102str; 103 ) 104返回假; 105 ) 106

107voidfprintinfo(file*file ) 109printf ) filename : % sn filemode : % s nencoding : % s nreadblead 110

12仅当在12voidfprint(file*file ) 113 ) 114//filemode中包含“r”或“”字符时才可调用fprint函数

115 if (! 文件可读(116 ) 117返回; 118 ) 119

120file*FP=fopen(file-filename,file-filemode ); 121字符; 122

123if(FP==null ) 125打印(failedtoopenfile % s (n ),file-filename ); 126返回; 127 ) 128

129while((chr=fgetc ) FP )!=eof(130 ) 131打印(“% c”,chr ); 132 ) 133

134针(' ); 135fseek(FP,0,SEEK_SET ); //重置为开头

136

137while((chr=fgetc ) FP )!=eof(138 ) 139printf('%x”,) unsigned char (chr ); 140 ) 141打印('nn ' ); 142

143fclose(FP; 144 ) 145

146语音构造文件(文件*文件) 147 ) 148free )文件; 149文件=空; 150 ) 151

152voidfprintansi(file*file ) 153 ) 154if (! 文件读(155 ) 156返回; 157 ) 158 if (文件编码==' ansi ' ) 159 ) 160fprint (文件); 161 ) 162错误

163 { 164 file * FP=fopen (file-filename,file-filemode ); 165

166 int i=0; 167 charch 168 char utf8 [ max _ path ]={0}; 169 char ansi[MAX_PATH]={0}; 170

171 //跳过前三个BOM字符

172fseek(FP,3,SEEK_SET ); 173while((ch=fgetc ) FP )!=eof(174 ) 175UTF8[I]=ch; 176 ) 177UTF8[I]=‘(0‘; 178utf82ansi(utf8,ansi ); 179printf('%sn ',ansi ); 180

181fclose(FP; 182 fp=NULL; 183(184 ) 185

186 //编码格式转换函数

187voidconvert(constchar*strin,char* strOut,int sourceCodepage,inttargetCodepage ) 189intlen=lstrlena ) stri ing 190 191 wchar_t pUnicode[1024]={0}; 192多码页(source code page,0,strIn,- 1,(LPWSTR ) pUnicode,unicodeLen ); 193

194 BYTE pTargetData[2048]={0}; 195 inttargetlen=widechartomultibyte (target code page,0,) LPWSTR ) pUnicode,-1,(char* ) pTargetData,0,NULL,NULL ) LPWSTR ) pUnicode,-1,(char* ) pTargetData,targetLen,NULL,NULL ); 197lstrcpya(strout,) char* ) pTargetData; 198 ) 199voidutf82ansi(PCHARsrc,PCHAR Dst ) 201convert ) src,Dst,CP_UTF8,CP_ACP ); 202 ) 203voidansi2utf8(PCHARsrc,PCHAR Dst ) 205convert ) src,Dst,CP_ACP,CP_UTF8); 206 ) 207

208 #

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。