2015-01-21 8 views
1

Я пытаюсь создать файл ANSI. Но все, что я пробую, дает мне спецификацию UTF-8 без спецификации.VBS Scripting.FileSystemObject Нужна помощь в написании файла ANSI txt

Я попытался сделать это с наименьшим количеством кода для целей тестирования, и это то, что я нашел.

Dim myFile 
Dim objFSO : Set objFSO=CreateObject("Scripting.FileSystemObject") 
Set myFile = objFSO.CreateTextFile("C:\TestFile.txt") 
myFile.Close 

Приведенные выше код дает мне файл ANSI, как рекламируется MSDS, но когда я пишу ему в сильфоне кода

Dim myFile 
Dim objFSO : Set objFSO=CreateObject("Scripting.FileSystemObject") 
Set myFile = objFSO.CreateTextFile("C:\TestFile.txt") 
myFile.WriteLine "TestLine" 
myFile.Close 

При проверке файла с помощью Notepad ++ теперь у меня есть UTC-8 Вт/o Спецификация

Существует код, ожидающий фактического файла, который я пытаюсь создать. код не принимал файл. после некоторой утомительной отладки я обнаружил, что ей не нравится формат UTF. Если я сохраню как ANSI, используя Notepad ++, теперь код принимает файл. Мне нужно сделать это программно с дороги.

Может ли кто-нибудь подтвердить, получают ли они те же результаты? Как я могу убедиться, что в конечном итоге вы получите текстовый файл ANSI? Спасибо

+0

Я открываю результирующий файл с помощью блокнота ++. Существует зависимость от фактического файла, который я создаю, и ему не нравится формат UTF. Если я конвертирую файл в ANSI, используя блокнот ++, код принимает файл. Я могу поставить скриншоты, если вы хотите –

+1

Что вы .WriteLine (вместо TestLine) в myFile? Вы используете «On Error Resume Next» в своем «реальном» коде? –

+0

Файл, который я создаю, содержит другие имена файлов, которые поступают с различных тестовых станций. Результирующие файлы имеют символы типа градусов и различные инженерные символы на их имена. Я пишу интерфейс между двумя системами. У меня нет видимости кода принимающей стороны, но после тестирования я обнаружил, что когда формат файла UTF, как показано с помощью Notepad ++, он отклонит файл. Если я конвертирую тот же файл в ANSI и повторю попытку подачи его в принимающую систему, он работает отлично. Мне нужно, чтобы файл был ANSI и имел на них Инженерный жаргон. –

ответ

1

Общий синтаксис: object.CreateTextFile(filename[, overwrite[, unicode]]). Здесь

  • перезапись: Необязательный. Логическое значение, указывающее, можно ли перезаписать существующий файл. Значение true, если файл может быть перезаписан, false, если он не может быть перезаписан. Если они опущены, существующие файлы не будут перезаписаны. Примечание: Если аргумент overwrite равен false или не указан, для имени файла, которое уже существует, возникает ошибка .
  • unicode: Дополнительно. Логическое значение, указывающее, будет ли файл создан как Unicode или ASCII-файл. Значение равно true, если файл создан как файл Unicode, false, если он создан как файл ASCII. Если опустить, предполагается, что файл ASCII. (Но последнее утверждение, кажется, противоречит своему опыту ...)

Так что вы можете открыть файл с

Set myFile = objFSO.CreateTextFile("C:\TestFile.txt", true, false) 

Если не сработает, используйте object.OpenTextFile(filename[, iomode[, create[, format]]]), где

  • объекта : Необходимые. Объект всегда является именем файла FileSystemObject.
  • filename: обязательно. Строковое выражение, которое идентифицирует файл .
  • iomode: Дополнительно. Может быть одной из трех констант: ForReading, ForWriting, или ForAppending.
  • создать: необязательно.Логическое значение, указывающее, должен ли создаваться новый файл , если указанное имя файла не существует. Значение True , если новый файл создан, False, если он не создан. Если этот параметр опущен, новый файл не создается.
  • формат: дополнительно. Один из трех значений TriState, используемых для указания формата открытого файла . Если этот параметр опущен, файл открывается как ASCII.

Вы можете использовать буквенные значения для iomode, create и format аргументов, или определить (и использовать) следующие константы:

'various useful constants 
'iomode 
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
'create 
Const DontCreate = False ' do not create a new file if doesn't exist 
Const CreateFile = True ' create a new file if the specified filename doesn't exist 
'format 
Const OpenAsDefault = -2 ' Opens the file using the system default. 
Const OpenAsUnicode = -1 ' Opens the file as Unicode. 
Const OpenAsUSAscii = 0 ' Opens the file as ASCII. 

'TriState (seen in documetation) 
Const TristateUseDefault = -2 ' Opens the file using the system default. 
Const TristateTrue  = -1 ' Opens the file as Unicode. 
Const TristateFalse  = 0 ' Opens the file as ASCII. 

Затем вы можете открыть файл с (но убедитесь, чтобы удалить существующий, если существует!)

Set myFile = objFSO.OpenTextFile("C:\TestFile.txt", 2, true, 0) 

или (более читаемым)

Set myFile = objFSO.OpenTextFile("C:\TestFile.txt" _ 
      , ForWriting, CreateFile, OpenAsUSAscii) 
+0

Спасибо, что нашли время, чтобы ответить. Я пробовал этот код, но, к сожалению, почему-то. Когда я использую метод WriteLine, файл преобразуется в UTF. файл остается ANSI, если я не пишу его с помощью метода WriteLine. –