Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2016, 19:59   #1
mahonin.ms
Новичок
Джуниор
 
Регистрация: 21.01.2016
Сообщений: 1
По умолчанию Vba в начале строки вставляет 3 непечатных символа

Собственно, их я увидел через hex редактор. Этими символами являются: ef это "п",bb это "»",bf это "ї". Для меня они очень критичны.
Изначально строку пишу через WriteLine("блабла") в уникоде, затем получившийся файл переконвертирую в utf-8. Переконвертирование делаю так:
SpecialSymbols(0) = 239
SpecialSymbols(1) = 187
SpecialSymbols(2) = 191

path = ParentFolder & "IoMap.iom"
Set oStream = New ADODB.Stream
oStream.Type = 2
oStream.Charset = "unicode"
oStream.Open
oStream.LoadFromFile ("C:\BR_Vedenskoe\...\IoMap.iom" )
str = oStream.ReadText()
oStream.Close

For Count = 0 To 2
str2 = Replace(str, Chr(SpecialSymbols(Count)), "")
Next Count

str2 = Right(str, Len(str) - 1)
oStream.Charset = "utf-8"
oStream.Open
oStream.WriteText (str2)
oStream.SaveToFile "C:\BR_Vedenskoe\...\IoMapUTF-8.iom", adSaveCreateOverWrite
oStream.Close
Собственно я вообще на vba никогда не кодил. Могут гуру помочь разобраться откуда берутся эти символы и как их убрать? Видимо они берутся от WriteLine("")?
mahonin.ms вне форума Ответить с цитированием
Старый 21.01.2016, 21:51   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

3 символа - это BOM (byte order mark)

попробуйте эти функции для перекодировки
http://excelvba.ru/code/SaveTextToFile
http://excelvba.ru/code/encode

по первой ссылке есть кодировки utf-8noBOM и utf-8
utf-8noBOM - это без этих 3 символов, а utf-8 - с 3 символами в начале

а под unicode может пониматься как utf-16, так и utf-8
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать процедуру подобно insert, которая после каждого вхождения символа C в строку S1 вставляет строку S2 azalia Паскаль, Turbo Pascal, PascalABC.NET 17 09.01.2014 12:39
Известно, что в начале строки s находятся ... hunter129 Паскаль, Turbo Pascal, PascalABC.NET 3 11.11.2013 22:43
Вставить текст в мемо в начале строки glebast Помощь студентам 2 08.09.2012 19:59
Пробелы в начале строки nats C# (си шарп) 0 26.07.2011 16:10
В чем проблема появления символа & в начале каждого заголовка итема созданного в рунтайте раздела меню? SkAndrew Общие вопросы Delphi 17 10.08.2008 21:44