Всем привет! Появилась задача выгружать данные из базы в текстовый файл в формате UTF-8, не соображу какими способами это можно сделать. Есть у кого уже навык работы с этим? Посоветуйте плиз.
Погуглил малость - нашел функцию UTF8Encode() теоретически если записывать в мемо текст используя эту функцию - то после сохранения содержимого мемо в файл - он говорит якобы кодировка utf-8. Одна фигня только - я не вижу что написано в мемо....
Как работать с UTF-8
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

Либо перекодировкой занимайся при которой будет потеря данных, либо использую utf компоненты т.е. дэльфя от 2009 года тебе нужна.
[syntax=Delphi] [/syntax]
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
дык если тебе просто файл записать, зачем смотреть его в мемо? Для старых дельфей есть ТНТ компоненты, но по-моему лучше уж на Д09 и старше переходить...

Можно воспользоваться парой функций:
1) MultiByteToWideChar - преобразуем из "обычного" текста в Unicode
2) WideCharToMultiByte - преобразуем из Unicode в UTF-8 (или вообще в любую другоу кодирову при необходимости)
Более подробно. Сперва MultiByteToWideChar вызываем, указывая параметр cchWideChar (размер буфера-получателя) как ноль. При аком вызове ф-ия возвращает требуемый размер буфера, необходимый для размещения строки результата. Выделяем в памяти буфер нужного размера и делаем повторный вызов уже для преобразования строки.
Другие параметры, передаваемые в ф-ию:
CodePage = 1251 (или 866, если вдруг исходная строка в DOS-кодировке
)
dwFlags = 0
lpMultiByteStr = указатель на исходную строку
cbMultiByte = длина (в байтах) исходной строки
lpWideCharStr = указатель на буфер-приемник (выделенный после первого шага)
cchWideChar = размер буфера-приемника (результат вызова ф-ии на перовом шаге)
Далее аналогичным образом (т.е. тоже "в два прохода") пользуемся ф-ей WideCharToMultiByte.
Задаем CodePage = CP_UTF8 (это WinAPI-шная константа, если что, она имеет значение 65001)
1) MultiByteToWideChar - преобразуем из "обычного" текста в Unicode
2) WideCharToMultiByte - преобразуем из Unicode в UTF-8 (или вообще в любую другоу кодирову при необходимости)
Более подробно. Сперва MultiByteToWideChar вызываем, указывая параметр cchWideChar (размер буфера-получателя) как ноль. При аком вызове ф-ия возвращает требуемый размер буфера, необходимый для размещения строки результата. Выделяем в памяти буфер нужного размера и делаем повторный вызов уже для преобразования строки.
Другие параметры, передаваемые в ф-ию:
CodePage = 1251 (или 866, если вдруг исходная строка в DOS-кодировке

dwFlags = 0
lpMultiByteStr = указатель на исходную строку
cbMultiByte = длина (в байтах) исходной строки
lpWideCharStr = указатель на буфер-приемник (выделенный после первого шага)
cchWideChar = размер буфера-приемника (результат вызова ф-ии на перовом шаге)
Далее аналогичным образом (т.е. тоже "в два прохода") пользуемся ф-ей WideCharToMultiByte.
Задаем CodePage = CP_UTF8 (это WinAPI-шная константа, если что, она имеет значение 65001)
приватизация квартир военным
приватизация военных квартир
приватизация жилья военным
приватизация славянка
приватизация осиновая роща
департамент жилищного обеспечения
западное джо
департамент жилищного обеспечения мо рф
ДЖО МО РФ
ЗАПАДНОЕ РУЖО
споры с командиром части
исключение из списков части
военная ипотека
жилье военным
квартиры для военных
участники военной ипотеки
задать вопрос юристу
юрист
адвокат
военный юрист
военные юристы
военный адвокат
юрист онлайн
военный юрист онлайн
приватизация военных квартир
приватизация жилья военным
приватизация славянка
приватизация осиновая роща
департамент жилищного обеспечения
западное джо
департамент жилищного обеспечения мо рф
ДЖО МО РФ
ЗАПАДНОЕ РУЖО
споры с командиром части
исключение из списков части
военная ипотека
жилье военным
квартиры для военных
участники военной ипотеки
задать вопрос юристу
юрист
адвокат
военный юрист
военные юристы
военный адвокат
юрист онлайн
военный юрист онлайн