版本1:
MsgBox % FileGetFormat("C:\Users\Dianbo\Desktop\你的文本.txt") ; 如果文本没有带编码标签,则无法正确读出 FileGetFormat(file){ static BOM:={254_255:"UTF-16 BE",255_254:"UTF-16 LE",239_187_191:"UTF-8",0_0_254_255:"UTF-32 BE" ,255_254_0_0:"UTF-32 LE",43_47_118_43:"UTF-7",43_47_118_47:"UTF-7",43_47_118_56:"UTF-7" ,43_47_118_57:"UTF-7",221_115_102_115:"UTF-EBCDIC",132_49_149_51:"GB 18030"} If ("D"!=aFormat:=A_FormatInteger) SetFormat,Integer,D f:=FileOpen(file,"rw"),f.Pos:=0 BOM4:=(BOM3:=(BOM2:=f.ReadUChar() "_" f.ReadUChar()) "_" f.ReadUChar()) "_" f.ReadUChar(),f.Close() If (aFormat!="D") SetFormat,Integer,%aFormat% FileRead,f,*c %file% If BOM.HasKey(BOM4) return BOM[BOM4] else if BOM.HasKey(BOM3) return BOM[BOM3] else if BOM.HasKey(BOM2) return BOM[BOM2] FileRead,f,*P65001 %file% FileGetSize,size,%file% return StrLen(f)=size?"ANSI":"UTF-8 no BOM" }
版本2【不完善】:
读取文本文件函数("C:\Users\Dianbo\Desktop\你的文本.txt", 文件行数, 文件编码) MsgBox % 文件行数 ", " 文件编码 读取文本文件函数(文件路径, ByRef 文件行数:=0, ByRef 文件编码:="") { if FileExist(文件路径) { FileRead, text, *c %文件路径% if (0xBFBBEF=NumGet(&text,"UInt") & 0xFFFFFF) 文件编码:= "UTF-8 BOM" else if (0xFFFE=NumGet(&text,"UShort") ) 文件编码:= "UTF-16BE BOM" else if (0xFEFF=NumGet(&text,"UShort") ) 文件编码:= "UTF-16LE BOM" FileRead, 文件内容, %文件路径% } else 文件内容 := 文件路径 ; 文件内容:= "`r`n" . 文件内容 . "`r`n" StringReplace, 文件内容, 文件内容, `n, `n, UseErrorLevel 文件行数 := ErrorLevel + 1 Return 文件内容 }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)