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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2011, 15:31   #1
chugo
Пользователь
 
Регистрация: 19.02.2009
Сообщений: 46
По умолчанию Как экспортировать файл как юникод

Привет всем!
Я пытаюсь сохранить некоторые данные в файле но обьязательно он должен быть в кодировке unicod

Dim FileHeder As String
Dim filePath As String

filePath = "D:\text.txt"
FileHeder = "nekotorie dannie"

вот так все получается (т.е. в фаиле записываются данные и сохраняется как unicod)
но перед текстом какиета два символа прибовляются

Open filePath For Binary As #1
Put #1, , StrConv(FileHeder, vbUnicode)

Close #1

Если в место "StrConv(FileHeder, vbUnicode)" написать просто "FileHeder" токда ничего лишнего не приписывается но сохраняется в кодировке ANSI

Так как Я начинающий в этом деле чегото упускаю
Что посоветуите?
Изображения
Тип файла: png text.png (36.8 Кб, 99 просмотров)
chugo вне форума Ответить с цитированием
Старый 27.01.2011, 16:01   #2
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
По умолчанию

А может попробовать этот файл сохранить заново и указать при сохранении кодировку юникод. А в программе уже кодировку не описывать, по сути туда данные должны писаться уже в нужной кодировке.
Swatch вне форума Ответить с цитированием
Старый 27.01.2011, 16:23   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

А!! Не морочьте никому голову!!
Эти два символа - это есть заголовок текстового файла в формате Unicode!
Сохраните текст в формате уникод в том же блокноте и посмотрите потом файл любым hex вьювером!
и почитайте тут: Юникод ( Материал из Википедии)

цитирую оттуда (раздел "Порядок байтов":
Цитата:
Для определения формата представления Юникода в текстовом файле используется приём, по которому в начале текста записывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. byte order mark, BOM).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.01.2011, 16:51   #4
chugo
Пользователь
 
Регистрация: 19.02.2009
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Swatch Посмотреть сообщение
А может попробовать этот файл сохранить заново.
Конечно можно! но хотелось бы узнать можно ли сделать без этого.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Не морочьте никому голову!!
Я даже не думал кому то морочить голову. Просто есть проблема и как то надо его решить.

Если что получится напишу...
chugo вне форума Ответить с цитированием
Старый 27.01.2011, 19:53   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Я даже не думал кому то морочить голову.
простите за излишнюю эмоциональность, не сдержался.
я не имел в виду буквально...
подразумевалось, Вы просто заблуждаетесь, когда считаете, что это ошибка....

впрочем, сохраните какой-нибудь Ваш файлик. запакуйте его в архив и выложите этот архив на форум. посмотрим, какой такой это уникод у Вас.

ну и workaround - никто же Вам не мешает после сохранения открыть данный файл как бинарный и удалить первые два байта (например, банально скопировать в новый файл все остальные байты, пропустив первые два).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.01.2011, 11:08   #6
chugo
Пользователь
 
Регистрация: 19.02.2009
Сообщений: 46
По умолчанию

Начиная этот код мне нужно было из таблиц выводит данные.

ну и когда так попробовал лишние биты к радостью для меня не добавились

вот код может кому то понадобится:

Код:
Private Sub cmdExport_Click()

Dim rst         As DAO.Recordset
Dim buffer     As String
Dim filePath   As String
Dim j

filePath = "D:\bla.txt"

'styles это таблица

Set rst = CurrentDb.OpenRecordset("SELECT * FROM styles") 'bazidan cxrilis ageba

Do Until rst.EOF
    Open filePath For Binary As #1
    j = LOF(1)

    buffer = StrConv(rst!heder & vbCrLf, vbUnicode)
    'тут из таблицы styles беру строки от heder в цикле,
    ' добавляю перенос строки и кодирую в уникод

    Put #1, j + 1, buffer
    Close #1
    
    rst.MoveNext
Loop

rst.Close
Set rst = Nothing



End Sub
выходит что к переменной взятой из кода перекодировав прибавляется эти два бита в файл а из таблицы с помощью DAO нет
chugo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как экспортировать StringGrid1 и StringGrid2 в Word koysara Общие вопросы Delphi 1 05.10.2010 12:18
Как экспортировать нужные столбцы lucky_09 Microsoft Office Excel 4 16.06.2009 17:49
Как экспортировать БД из 1С в MySQL Andrushkaaaa PHP 4 10.11.2007 11:02
Как экспортировать данные Малявка Microsoft Office Excel 5 20.10.2007 11:53
Как экспортировать модель 3d max в Delphi Alar Общие вопросы Delphi 0 29.10.2006 23:43