powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как работать с файлами имена которых на иврите и кирилице
6 сообщений из 6, страница 1 из 1
Как работать с файлами имена которых на иврите и кирилице
    #39445079
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые Гуру!

1. Есть DLL на с++, которая из С# получает на входе TCHAR* pPathFiles в кодировке UTF-16 (полный путь к файлу изображения)
2. Есть база данных SQLite в кодировке UTF-8

DLL работает с базой данных SQLite и делает следующее:

- Записывает изображение в поле BLOB в базу с изображениями. (функции для чтения - CreateFilу, ReadFile API)
- Выделяет из полного пути субстроку с именем файла и заносит его в основную базу приложения в таблицу с метаданными файла изображения.
(pPathFiles преобразую в wstring выделяю субстрокуБ потом в базу )

Но имя файла может быть на английском , русском и иврите

Проблемы :
Английский - без проблем.
Русский - в поле blob пишет, значит файл с именем на кирилице открывает.
Но субстрока с именем файла в базу ложится в UTF-16 (т.е. - ����.jpg)
Иврит (הוראת קבע.png)- файл для чтения не открывается из-за некорректного имени,
ну и, естесственно, в базу пишется имя файла как הוראת קבע.png

Вопрос 1: Как поменять кодировку из UTF-16 в UTF-8 (исходная строка std::wstring) ?
Вопрос 2: Как работать с именами файлов на иврите открыть файл для чтения, записи,
создания файла с именем на иврите ?

Заранее благодарен всем кто захочет помочь.
...
Рейтинг: 0 / 0
Как работать с файлами имена которых на иврите и кирилице
    #39445080
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ 1: WideCharToMultiByte()
Ответ 2: CreateFileW()
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как работать с файлами имена которых на иврите и кирилице
    #39445106
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, спасибо большое!
Завтра попробую и отпишусь.
...
Рейтинг: 0 / 0
Как работать с файлами имена которых на иврите и кирилице
    #39445522
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov , добрый день

1. Файлы с именами на кирилице и иврите открываются нормально

А при использовании WideCharToMultiByte() в базу записывается строка на кирилице и на иврите,
но без расширения и само имя обрезается на произвольное количество символов в начале строки и в конце
в зависимости от длины строки
в строке на иврите может еще и в конце подставить спец.символ

Вот мой код, подскажите где я накосячил?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
//dll на входе получает три варианта: указатель (pFName) на "Picture.jpg", "Картинка.jpg", "תמונה.jpg"

wstring FName = (wstring) pFName;                            //FName значение входного параметра
std::string Result;
char *dest = new char[FName.length() + 1];
dest[FName.size()] = '\0';
WideCharToMultiByte(CP_UTF8, 0, FName.c_str(), -1, dest, (int)FName.length(), NULL, NULL);
Result = dest;
delete[] dest;



Спасибо.
...
Рейтинг: 0 / 0
Как работать с файлами имена которых на иврите и кирилице
    #39445544
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArbitВот мой код, подскажите где я накосячил?
Здесь:
Код: sql
1.
FName.length() + 1


и здесь:
Код: sql
1.
WideCharToMultiByte


Открой для себя сколько байт может занимать символ в utf-8 и что возвращает эта функция.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как работать с файлами имена которых на иврите и кирилице
    #39445581
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, спасибо огромное!
Разобрался, все работает замечательно!
Хорошего дня
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как работать с файлами имена которых на иврите и кирилице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]