找回密码
 加入
搜索
查看: 491|回复: 6

[网络通信] 【已解决】如何识别文本文件格式?

[复制链接]
发表于 2022-9-1 18:46:29 | 显示全部楼层 |阅读模式
本帖最后由 chishingchan 于 2022-9-1 20:33 编辑
Func _FileEncode($sFilePath)
        Local $ADODB_Stream = ObjCreate("ADODB.Stream")
        $ADODB_Stream.Type = 1
        $ADODB_Stream.Open
        $ADODB_Stream.LoadFromFile($sFilePath)
        $ADODB_Stream.Position = 0x0
        Local $File_Header = $ADODB_Stream.Read(2)
        Switch $File_Header
                Case 0xFEFF
                        Return 32
                        ;Return "Unicode"
                Case 0xBBEF
                        Return 128
                        ;Return "UTF-8 + BOM"
                Case Else
                        Return 512
                        ;Return "ANSI"
        EndSwitch
EndFunc
以文件头方式识别文件遇到了一个问题!

UTF-8 与 ANSI 的文件头是一样的!文件内容不同在于 亚洲文字编码 的不一样。

请问如何识别文本文件的格式?即如何完善这个函数?谢谢!

发表于 2022-9-1 19:26:42 | 显示全部楼层
FileGetEncoding 是要这个不

点评

谢谢!这个可以。  发表于 2022-9-1 20:20

评分

参与人数 1金钱 +100 收起 理由
chishingchan + 100 很给力!

查看全部评分

 楼主| 发表于 2022-9-1 20:32:40 | 显示全部楼层
绿色风 发表于 2022-9-1 19:26
FileGetEncoding 是要这个不

其实这样就可以:
Local $hFileOpen = FileOpen($sFilePath)

原来我画蛇添足!
Local $hFileOpen = FileOpen($sFilePath, FileGetEncoding($sFilePath))
发表于 2022-9-2 10:31:34 | 显示全部楼层
chishingchan 发表于 2022-9-1 20:32
其实这样就可以:
Local $hFileOpen = FileOpen($sFilePath)

AU3读取文本这一点很强啊,其他的语言如C#似乎就无法做到自动判断编码打开。
发表于 2022-9-2 10:36:12 | 显示全部楼层
本帖最后由 afan 于 2022-9-2 10:37 编辑
chishingchan 发表于 2022-9-1 20:32
其实这样就可以:
Local $hFileOpen = FileOpen($sFilePath)

如果是默认打开读取,这些都是多余的。直接读
FileRead($sFilePath)

除非需要二进制数据,或逐行读取,或自动判断的格式不对,才需要 FileOpen
发表于 2022-9-2 14:10:42 | 显示全部楼层
值得学习,我要好好看看学习学习
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-16 16:34 , Processed in 0.077814 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表