Как изменить кодировку с UTF-8 на UTF-8-BOM экспортируемых * .txt файлов из Excel? - PullRequest
0 голосов
/ 13 января 2019

Экспортированные текстовые файлы из Excel кодируются в формате UTF-8.

Требуется кодировка UTF-8-BOM.

Я думаю, что в коде должна быть вставлена ​​строка, написанная так:

Java

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

Jasperreport CSV UTF-8 без спецификации вместо UTF-8

или

1017 * HTML5 *

meta charset = "utf-8"

Плохой UTF-8 без кодировки BOM

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? Спасибо.

1 Ответ

0 голосов
/ 13 января 2019

Вместо Печать файл строка за строкой, может быть эффективнее

  • сохранить выбранный диапазон как CSV UTF-8
    • вам может понадобиться изменить тип файла после сохранения
  • Используйте ADO для обработки файла как UTF-8

Либо добавится спецификация автоматически.

EDIT

Если вы незнакомы, вы можете выполнить процесс save to csv - utf8 вручную с включенным устройством записи макросов. Затем проверьте, что вы записали, и внесите соответствующие изменения.

Еще один способ добавления спецификации в контексте существующего кода - записать ее непосредственно в виде байтового массива в первой строке.

Например:

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

поместит спецификацию в начало файла. Затем вы должны изменить режим в вашем последующем Print коде на Append.

Предлагаю вам прочитать о плюсах и минусах использования Print против Write

Вы также должны прочитать о заявлениях декларации. В вашем случае только последняя переменная в каждой строке объявляется как указанный тип; предыдущие переменные неявно объявляются как имеющие тип Variant.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...