chishingchan 发表于 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 是要这个不

chishingchan 发表于 2022-9-1 20:32:40

绿色风 发表于 2022-9-1 19:26
FileGetEncoding 是要这个不

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

原来我画蛇添足!
Local $hFileOpen = FileOpen($sFilePath, FileGetEncoding($sFilePath))

zhanglei1371 发表于 2022-9-2 10:31:34

chishingchan 发表于 2022-9-1 20:32
其实这样就可以:
Local $hFileOpen = FileOpen($sFilePath)



AU3读取文本这一点很强啊,其他的语言如C#似乎就无法做到自动判断编码打开。

afan 发表于 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

pqhgs 发表于 2022-9-2 14:10:42

值得学习,我要好好看看学习学习
页: [1]
查看完整版本: 【已解决】如何识别文本文件格式?