-1

После успешного добавления текста в текстовый файл, я получаю странные символы, потому что я не устанавливаю правильный формат? Вот код, который я пробовал:

Dim fso As Object
Dim Msg As string
Msg = "Hello World"
Set fso = CreateObject("Scripting.FileSystemObject")
Dim Fileout As Object
Dim filePath As String
filePath = "C:\file.txt"
Const ForAppending = 8
Set Fileout = fso.OpenTextFile(filePath, ForAppending) <<== might be the error not sure
Fileout.WriteBlankLines (1)
Fileout.Write Msg
Fileout.Close
Set fso = Nothing
Set Fileout = Nothing

Выход:

Тестирование моих дополнений.<牅 潲 ⁲‣ ㄠ 〰 ‴ <<< == получить этот материал при добавлении.

2 ответа2

0

Сначала откройте текстовый файл с помощью блокнота, проверьте кодировку в диалоговом окне «Сохранить как», затем установите ту же кодировку в 4-м аргументе.Метод OpenTextFile (-2 - системное значение по умолчанию, -1 - Unicode, 0 - ASCII). Я считаю, что ваш файл имеет кодировку Unicode, поэтому 4-й аргумент должен быть -1.

0

Я бы установил формат файла на «Unicode» вместо «deafulat», чтобы была записана метка порядка байтов (BOM), которую другие приложения MS могут использовать для распознавания кодировки файла.

Если ваш текст ограничен ASCII, я бы тоже попробовал этот формат.

Я не знаю, как они влияют на исходную спецификацию при добавлении (вероятно, нет).

объект.OpenTextFile(имя файла [, iomode [, создать [, формат]]])

Аргумент формата может иметь любую из следующих настроек:

Constant           Value  Description
TristateUseDefault    2   Opens the file using the system default.
TristateTrue          1   Opens the file as Unicode.
TristateFalse         0   Opens the file as ASCII.

Справочник по Visual Basic для приложений - метод OpenTextFile

Обратите внимание, что "Unicode" - это неправильное название Microsoft для кодировки UTF-16 LE. Существует несколько разных кодировок Unicode. Возможно, наиболее подходящий, UTF-8, явно не указывается явно в этом API.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .