Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Открытие файла базы данных с Юникодом в пути и названии / 21 сообщений из 21, страница 1 из 1
24.04.2010, 12:09
    #36596113
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Здравствуйте!
Использовал базу sqlite без проблем пока не появилась необходимость поддержки полноценного юникода во всей программе.
Столкнулся с проблемой, функция sqlite3_open16 возвращает ошибку номер 14 ( Unable to open the database file ) если в пути к файлу или файле базы данных встречается хотябы один Юникод символ. Подскажите в чем может быть проблема?
Спасибо!
...
Рейтинг: 0 / 0
24.04.2010, 13:19
    #36596156
grio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Никита2323,
одно скажу точно, проблема не в базе SQLITE.
обрати внимаение на функции по работе с юникодом в том языке, на котором пишешь программу.
...
Рейтинг: 0 / 0
24.04.2010, 13:53
    #36596172
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
grioНикита2323,
одно скажу точно, проблема не в базе SQLITE.
обрати внимаение на функции по работе с юникодом в том языке, на котором пишешь программу.
Пишу на С++ использую MSVS в проэкт скомпилирован с Character Set: Unicode , WCHAR и CString использую как типы строк в которых и передаю путь к файлу функции sqlite3_open16.

Таже функция тот же код отлично работает если все симполы в пути и названии файла английские...

Какой то особый юникод нужно использовать для работы с sqlite?
Насколько я понимаю _wchar_t это стандарт..
...
Рейтинг: 0 / 0
24.04.2010, 15:05
    #36596235
grio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Никита2323,
ты передаешь драйверу SQLITE имя файла базы, попробуй передавать не имя, а хеадер файла. А предварительно еще глянь как себя поведет if (file.exists()).
...
Рейтинг: 0 / 0
24.04.2010, 15:58
    #36596270
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
grioНикита2323,
ты передаешь драйверу SQLITE имя файла базы, попробуй передавать не имя, а хеадер файла. А предварительно еще глянь как себя поведет if (file.exists()).
хеадер это как? есть еще какой то способ открыть файл базы не передавая полный путь к этому файлу?
...
Рейтинг: 0 / 0
24.04.2010, 16:03
    #36596272
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
grioНикита2323,
ты передаешь драйверу SQLITE имя файла базы, попробуй передавать не имя, а хеадер файла. А предварительно еще глянь как себя поведет if (file.exists()).
ааа.. ты мееш ввиду HANDLE файла? тоесть открыть его стандартной функцией и передать sqlite ту указатель на файл?
...
Рейтинг: 0 / 0
24.04.2010, 16:12
    #36596277
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Какая функция является аналогом sqlite3_open16 но с указателем на файл вместо пути к файлу?
...
Рейтинг: 0 / 0
24.04.2010, 20:59
    #36596459
ЯИра
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Никита, приведи кусок кода где ошибка появляется
...
Рейтинг: 0 / 0
25.04.2010, 00:09
    #36596578
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
ЯИраНикита, приведи кусок кода где ошибка появляется

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
sqlite3* mpDB;
void open(LPCTSTR filename)
{
    int nRet;
    nRet = sqlite3_open16(filename, &mpDB);

   /*
      nRet при открытии файла без юникода в названии возвращает 0
      nRet при открытии файла с юникодом в названии возвращает 14
   */
}
...
Рейтинг: 0 / 0
25.04.2010, 02:21
    #36596633
ЯИра
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Никита2323,

а значение filename чему равно, когда возникает ошибка?
...
Рейтинг: 0 / 0
25.04.2010, 02:26
    #36596636
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
ЯИраНикита2323,

а значение filename чему равно, когда возникает ошибка?

filename равно "С:\Work\Project\Data\й\data.db" где data.db это файл базы данных sqlite
если название папки "й" заменить на какой либо англ символ то файл базы открывается.

зы. папка названна "й" специально для тестирование работы с юникодом
...
Рейтинг: 0 / 0
25.04.2010, 11:45
    #36596748
ЯИра
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
похоже точно проблемы с путем с кириллицей, но у меня не так проявляется
код
Код: plaintext
1.
2.
	sqlite3 *db;
	rc = sqlite3_open16(L"D:\Й\exam1.db", &db);
результат rc=0 и в корне диска D база с таким именем Éexam1.db
...
Рейтинг: 0 / 0
25.04.2010, 11:48
    #36596750
ЯИра
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
решение найдено, такой код нормально создает базу
Код: plaintext
1.
rc = sqlite3_open16(L"D:\\Й\\exam1.db", &db);
...
Рейтинг: 0 / 0
25.04.2010, 12:35
    #36596778
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
ЯИрарешение найдено, такой код нормально создает базу
Код: plaintext
1.
rc = sqlite3_open16(L"D:\\Й\\exam1.db", &db);

Спасибо!
Попробовал так, у меня все равно не открывается... у меня английская windowsXP все кодировки устанновленны..
Вы собираете проэкт в VisualStudio? Собираете с CharacterSet=Unicode в настройках проэкта?
...
Рейтинг: 0 / 0
25.04.2010, 18:58
    #36597137
ЯИра
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Да, VS2008, Набор знаков = Использовать Юникод-кодировку, Windows 7
...
Рейтинг: 0 / 0
25.04.2010, 19:09
    #36597149
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
ЯИраДа, VS2008, Набор знаков = Использовать Юникод-кодировку, Windows 7
Наверное какие то особенности файловой системы моей версии ОС, буду искать обхоные пути, Спасибо!
...
Рейтинг: 0 / 0
25.04.2010, 22:15
    #36597365
ЯИра
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Может дело в сборке SQLite? Я сама собирала
...
Рейтинг: 0 / 0
26.04.2010, 01:22
    #36597563
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
ЯИраМожет дело в сборке SQLite? Я сама собирала
Думал об этом но не нашел на сайте исходники с проэктными файлами для MSVS, не стал заморачиватся сборками под Linux, так как сейчас нет рядом машины с этой ОС а ставить виртуальную машину это время.. Подскажите где на их сайте исходники с проэктными файлами под MSVS? или все таки под gcc прийдется собирать?
...
Рейтинг: 0 / 0
26.04.2010, 01:31
    #36597570
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Никита2323ЯИраМожет дело в сборке SQLite? Я сама собирала
Думал об этом но не нашел на сайте исходники с проэктными файлами для MSVS, не стал заморачиватся сборками под Linux, так как сейчас нет рядом машины с этой ОС а ставить виртуальную машину это время.. Подскажите где на их сайте исходники с проэктными файлами под MSVS? или все таки под gcc прийдется собирать?Зачем тебе проектные файлы?
Кстати, открой орфографический словарь: про е кт. Глаза режет тебя читать.
Выкачивай амальгаму (самый первый файлик на странице скачиваний). Распаковывай архив - получишь sqlite3.cpp и sqlite3.h, подключи их в свой проект и все.
...
Рейтинг: 0 / 0
26.04.2010, 02:04
    #36597583
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Супер! Спасибо! Сейчас буду пробовать, я использовал sqlite через lib и dll не увидел что есть возможность просто cpp подключить.
...
Рейтинг: 0 / 0
26.04.2010, 02:52
    #36597592
Никита2323
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файла базы данных с Юникодом в пути и названии
Никита2323,

Круто! Вроде получилось все заработало! Всем спасибо!!!
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Открытие файла базы данных с Юникодом в пути и названии / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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