【问题标题】:How to change encoding from UTF-8 to UTF-8-BOM of exported *.txt files from Excel?如何将 Excel 中导出的 *.txt 文件的编码从 UTF-8 更改为 UTF-8-BOM?
【发布时间】:2019-01-13 11:30:24
【问题描述】:

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

需要编码 UTF-8-BOM。

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

Java

?xml version="1.0" encoding="UTF-8"?

Jasperreport CSV UTF-8 without BOM instead of UTF-8

HTML5

meta charset="utf-8"

Bad UTF-8 without BOM encoding

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? 谢谢。

【问题讨论】:

  • 想知道为什么需要 BOM?你会导入到其他需要它的程序吗?
  • 感谢您的帮助。是的。我需要自动生成 *.tex 文件以在 Context /Latex/ 中实现。我发现,如果插入一行: ... Const strCharset = "utf-8-bom" ... ,则文件是 ANSI 编码的。这不是解决方案,而是向前迈出一步。
  • 此代码不使用 UTF-8 字符编码写入文件。它使用计算机用户当前的 ANSI 编码(很可能不是 UTF-8)。消费程序不能读取 xlsx 工作簿吗?它是一个开放标准(Open XML SpreadsheetML)。 CSV 的问题在于它会丢弃大量元数据,然后必须将这些元数据单独传达给后续读者。

标签: excel vba encoding utf-8


【解决方案1】:

与逐行打印文件相比,这样做可能更有效

  • 将您选择的范围保存为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

我建议您阅读使用 PrintWrite 的优缺点

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

【讨论】:

  • 我不懂编程。代码由 Jugal Shah stackoverflow.com/questions/54149532/… 编写,我需要多个文件。没关系,如果 *.csv 文件是用适当的编码生成的。我将使用“批量重命名实用程序”重命名它们。您能帮我将代码从打印更改为保存到文件中吗?
  • 如果你是文盲,你将无法维护你的代码,所以你应该认真考虑聘请专业人士来做这件事。但是请参阅我的编辑以了解其他一些想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 2017-05-08
  • 2011-11-16
相关资源
最近更新 更多