excel - 如何将 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"
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?谢谢你。
解决方案
而不是逐行打印文件,它可能更有效
- 将您选择的范围保存为
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 类型。
推荐阅读
- mysql - MariaDB 10.1 Docker 崩溃 InnoDB
- xslt - 如何计算节中的 disp-quote
- javascript - 429 Too Many Requests - Angular 7 - 多个文件上传
- docker - dockerfile 找不到 entrypoint.sh
- python - Python:JSON 到 CSV
- r - R 基于前一行的逐行条目填充
- c# - How to create a dictionary that only allows objects that contains a certain value matching the dictionary key
- automation - How to write the expect script to install mariadb?
- postgresql - 插入,冲突时更新,为什么失败?postgresql, pgadmin
- java - Verify JWT signature PS256 algorithm