Я должен создать текстовый файл ANSI из Доступа recordset что выводы к JSON и YAML. Я могу записать файл, но вывод выпускает исходные символы, и я должен выйти из них. Например, умляут-O (ö) должен быть "\u00f6".
Я думал, кодируя файл, поскольку UTF-8 будет работать, но он не делает. Однако посмотревший на файл, кодирующий снова, если Вы пишете "UTF-8 без BOM" затем, все работает.
Делает любой знает как к также
a) Выпишите текст как UTF-8 без BOM, или b) Записать в ANSI, но выходе из символов неASCII?
Public Sub testoutput()
Set db = CurrentDb()
str_filename = "anothertest.json"
MyFile = CurrentProject.Path & "\" & str_filename
str_temp = "Hello world here is an ö"
fnum = FreeFile
Open MyFile For Output As fnum
Print #fnum, str_temp
Close #fnum
End Sub
... хорошо .... я нашел пример кода о том, как удалить спецификацию. Я бы подумал, что можно было бы сделать это более элегантно, когда на самом деле писали текст. Неважно. Следующий код удаляет спецификацию.
(Первоначально это было размещено Саймоном Педерсеном на http://www.imagemagick.org/discourse-server/viewtopic.php?f=8&t=12705 )
' Removes the Byte Order Mark - BOM from a text file with UTF-8 encoding
' The BOM defines that the file was stored with an UTF-8 encoding.
Public Function RemoveBOM(filePath)
' Create a reader and a writer
Dim writer, reader, fileSize
Set writer = CreateObject("Adodb.Stream")
Set reader = CreateObject("Adodb.Stream")
' Load from the text file we just wrote
reader.Open
reader.LoadFromFile filePath
' Copy all data from reader to writer, except the BOM
writer.Mode = 3
writer.Type = 1
writer.Open
reader.Position = 5
reader.CopyTo writer, -1
' Overwrite file
writer.SaveToFile filePath, 2
' Return file name
RemoveBOM = filePath
' Kill objects
Set writer = Nothing
Set reader = Nothing
End Function
Это может быть полезно для кто-то еще.