首页 > 解决方案 > 如何将 Excel 中导出的 *.txt 文件的编码从 UTF-8 更改为 UTF-8-BOM?

问题描述

从 Excel 导出的文本文件使用 UTF-8 编码。

需要编码 UTF-8-BOM。

我认为在代码中应该插入一行,写成这样:

爪哇

?xml 版本=“1.0”编码=“UTF-8”?

Jasperreport CSV UTF-8 没有 BOM 而不是 UTF-8

或者

HTML5

元字符集="utf-8"

没有 BOM 编码的错误 UTF-8

Sub export_data()
Dim row, column, i, j As Integer
Dim fullPath, myFile As String

fullPath = "C:\Workspace"
row = 21
column = 5

For i = 1 To column
    myFile = Cells(1, i).Value + ".txt"
    myFile = fullPath + "/" + myFile
    Open myFile For Output As #1
    For j = 2 To row
        Print #1, Cells(j, i).Value
    Next j
    Close #1
Next i

End Sub

我如何定义以及在哪里放置一行,它定义了编码 UTF-8-BOM?谢谢你。

标签: excelvbaencodingutf-8

解决方案


而不是逐行打印文件,它可能更有效

  • 将您选择的范围保存为CSV UTF-8
    • 您可能需要在保存后更改文件类型
  • 使用 ADO 将文件处理为 UTF-8

要么会自动添加 BOM。

编辑

如果您不熟悉,可以在save to csv - utf8打开宏记录器的情况下手动执行该过程。然后检查您录制的内容并进行适当的编辑。

在现有代码的上下文中添加 BOM 的另一种方法是将其作为字节数组直接写入第一行。

例如:

Dim BOM(0 To 2) As Byte 'EF BB BF
    BOM(0) = &HEF
    BOM(1) = &HBB
    BOM(2) = &HBF

Open myFile For Binary Access Write As #1
    Put #1, 1, BOM
Close #1

将 BOM 放在文件的开头。然后,您应该将后续Print代码中的模式更改为Append.

Print我建议您阅读有关使用vs的优缺点Write

您还应该阅读声明声明。在您的中,只有每行的最后一个变量被声明为指定类型;前面的变量被隐式声明为 Variant 类型。


推荐阅读