Выход из символов неASCII (или как удалить BOM?)

Я должен создать текстовый файл 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
5
задан MarkJ 12 May 2012 в 15:32
поделиться

1 ответ

... хорошо .... я нашел пример кода о том, как удалить спецификацию. Я бы подумал, что можно было бы сделать это более элегантно, когда на самом деле писали текст. Неважно. Следующий код удаляет спецификацию.

(Первоначально это было размещено Саймоном Педерсеном на 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

Это может быть полезно для кто-то еще.

7
ответ дан 14 December 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: