|
本帖最后由 gamer1314 于 2024-5-8 11:36 编辑
- Function 文本读写(文本路径, Optional 文本内容 = "", Optional 编码_utf8_ansi_utf8bom = "ansi", Optional 指针位置 = 0)
- 'txt的读取和写入,文本内容为空的时候是读取,不为空是写入
- If 文本内容 = "" Then 模式 = "读取" Else 模式 = "写入"
- If 模式 = "读取" And Dir(文本路径) = "" Then Exit Function
- If 模式 = "写入" And Dir(文本路径) <> "" Then Kill 文本路径
- '编码格式预处理
- Select Case LCase(编码_utf8_ansi_utf8bom)
- Case "utf8", "utf-8"
- 编码格式 = "utf-8"
- 指针位置 = 0
- Case "ansi", "gbk", "gb2312"
- 编码格式 = "GB2312"
- Case "utf8bom", "utf8 bom", "utf-8bom", "utf-8 bom"
- 编码格式 = "utf-8"
- 指针位置 = 3
- Case Else
- 编码格式 = 编码_utf8_ansi_utf8bom
- End Select
-
- Dim stm: Set stm = CreateObject("adodb.stream")
- stm.Type = 2 '以文本模式读取
- stm.mode = 3
- stm.Charset = 编码格式
- stm.Open
-
- Select Case 模式
- Case "读取"
- stm.LoadFromFile 文本路径
- 文本读写 = stm.ReadText
-
- Case "写入"
- Select Case 编码格式 & 指针位置
-
- Case "utf-80"
-
- stm.WriteText (文本内容)
- stm.Position = 3
- Dim stm2: Set stm2 = CreateObject("adodb.stream")
- With stm2
- .mode = 3
- .Type = 1
- .Open
- End With
- stm.CopyTo (stm2)
- stm2.SaveToFile 文本路径, 2
- Set stm2 = Nothing
-
- Case Else
-
- stm.WriteText (文本内容)
- stm.Position = 指针位置
- stm.SaveToFile 文本路径, 2
- End Select
-
- End Select
- stm.Flush
- stm.Close
- Set stm = Nothing
- End Function
复制代码
'测试
- Sub test323()
- 文本读写 "C:\test_utf8.txt", "test测试", "utf8"
- Debug.Print "utf8方式读取utf8数据:" & 文本读写("C:\test_utf8.txt", , "utf8")
- Debug.Print "utf8bom方式读取utf8数据:" & 文本读写("C:\test_utf8.txt", , "utf8bom")
- Debug.Print "ansi方式读取utf8数据:" & 文本读写("C:\test_utf8.txt", , "ansi")
-
- 文本读写 "C:\test_utf8bom.txt", "test测试", "utf8bom"
- Debug.Print "utf8方式读取utf8bom数据:" & 文本读写("C:\test_utf8bom.txt", , "utf8")
- Debug.Print "utf8bom方式读取utf8bom数据:" & 文本读写("C:\test_utf8bom.txt", , "utf8bom")
- Debug.Print "ansi方式读取utf8bom数据:" & 文本读写("C:\test_utf8bom.txt", , "ansi")
-
- 文本读写 "C:\test_ansi.txt", "test测试", "ansi"
- Debug.Print "utf8方式读取ansi数据:" & 文本读写("C:\test_ansi.txt", , "utf8")
- Debug.Print "utf8bom方式读取ansi数据:" & 文本读写("C:\test_ansi.txt", , "utf8bom")
- Debug.Print "ansi方式读取ansi数据:" & 文本读写("C:\test_ansi.txt", , "ansi")
-
- End Sub
复制代码
'输出结果
utf8方式读取utf8数据:test测试
utf8bom方式读取utf8数据:test测试
ansi方式读取utf8数据:test娴嬭瘯
utf8方式读取utf8bom数据:test测试
utf8bom方式读取utf8bom数据:test测试
ansi方式读取utf8bom数据:锘縯est娴嬭瘯
utf8方式读取ansi数据:test????
utf8bom方式读取ansi数据:test????
ansi方式读取ansi数据:test测试
|
|