powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Кодировка текста ошибки
25 сообщений из 53, страница 1 из 3
Кодировка текста ошибки
    #39493278
FastBaseDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При открытии залоченного файла получил ошибку.
Чтобы получить текст ошибки, вызвал fb_interpret. Понял что текст в виндовой кодировке сервера. Хочу правильно показать текст ошибки на клиенте. Как на клиенте узнать в какой кодировке приходят ошибки?
ConvertBytesToUnicodeString(fb_interpret, GetWindowsACP)
Код: plaintext
1.
2.
3.
4.
5.
'I/O error during "CreateFile (open)" operation for file "D:\DATA.FDB"
Error while trying to open file
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. 
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements
GDS Code: 335544344, SQL Code: -902, Error Code: 24'.


Ещё если в ошибке есть имена таблиц, полей, ограничений, то в тексте ошибки они приходят в utf-8. Как в общем виде можно решить задачу корректного отображения текста ошибки на клиенте? Клиент юникодный.
ConverUtf8tBytesToUnicodeString(fb_interpret)
Код: plaintext
1.
2.
3.
4.
'violation of FOREIGN KEY constraint "FK_Заявки_Модель" on table "Заявки"
Foreign key reference target does not exist
Problematic key value is ("Модель" = 2)
violation of FOREIGN KEY constraint ""


Можно ли как-то сказать серверу чтобы он отдавал текст ошибки не в виндовой кодировке сервера, а в utf-8? И чтобы текст ошибки брал не из активной кодовой страницы, а хотя бы из 1252?

FB 3.0.1
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493281
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В большинстве случаев (за исключением некоторых багов) текст ошибки выводится в кодировке
подключения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493285
FastBaseDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovВ большинстве случаев (за исключением некоторых багов) текст ошибки выводится в кодировке
подключения.

Я ищу хорошее решение. В том числе и для services api.
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493286
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FastBaseDevЯ ищу хорошее решение. В том числе и для services api.

Указание правильного чарсета подключения это и есть хорошее решение. В том числе и для
services api.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493303
FastBaseDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovУказание правильного чарсета подключения это и есть хорошее решение.

Чарсет подключения UTF8. Если перекодировать в UTF8, то получается:
First chance exception at $75F4C54F. Exception class EUIBError with message
'I/O error during "CreateFile (open)" operation for file "D:\����.fb"
Error while trying to open file
������� �� ����� �������� ������ � �����, ��� ��� ���� ���� ����� ������ ���������.
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements

А если перекодировать в 1251, то:
First chance exception at $75F4C54F. Exception class EUIBError with message
'I/O error during "CreateFile (open)" operation for file "D:\База.fb"
Error while trying to open file
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements
По какому принципу одни ошибки кодируются в utf-8, а другие нет?
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493308
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FastBaseDevЧарсет подключения UTF8. Если перекодировать в UTF8, то получается:

А можно писать как-то сразу на русском? У вас подключение UTF8, то есть вы ошибку получаете какой-то кодировке и после этого UTF8 ещё раз перекодируете в UTF8? Пришлось несколько раз перечитать ветку, чтобы понять что имелось в виду.

А родная кодировка базы какая?
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493310
FastBaseDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvpFastBaseDevЧарсет подключения UTF8. Если перекодировать в UTF8, то получается:

А можно писать как-то сразу на русском?Я конечно не перекодирую в UTF8. Очень криво написал, согласен. Я перекодирую из того что пришло. В одних ошибках текст приходит в UTF8, в других в 1251. И я не пойму как с этим работать.

alekcvpА родная кодировка базы какая?UTF8.
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493314
FastBaseDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvpFastBaseDevЧарсет подключения UTF8. Если перекодировать в UTF8, то получается:

А можно писать как-то сразу на русском?
Первое сообщение кстати сразу на понятном русском :)
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493318
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FastBaseDevВ одних ошибках текст приходит в UTF8, в других в 1251. И я не пойму как с этим работать.

Поскольку мой юникодный патч отвергли - никогда не использовать ничего кроме латинских
букв в именах файлов и объектов БД. И использовать исключительно ANSI кодировку для
подключения. Ну или патчить клиент чтобы он Win32 ошибки расшифровывал в unicode.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493340
FastBaseDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovFastBaseDevВ одних ошибках текст приходит в UTF8, в других в 1251. И я не пойму как с этим работать.

Поскольку мой юникодный патч отвергли - никогда не использовать ничего кроме латинских
букв в именах файлов и объектов БД.
Пользователям про имена файлов я на сайте написал, но думал что это исправится в четвёрке. Теперь понимаю что нет. Жалко конечно отказываться от Firebird, но что делать? Остаётся только смириться и искать другие варианты.
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493361
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FastBaseDevОстаётся только смириться и искать другие варианты.

Ищи. Оракул рекомендую.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493365
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНу или патчить клиент чтобы он Win32 ошибки расшифровывал в unicode.

А он их разве не конвертирует в charset подключения?
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493366
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpА он их разве не конвертирует в charset подключения?

Нет. Нечем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493367
FastBaseDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovFastBaseDevОстаётся только смириться и искать другие варианты.

Ищи. Оракул рекомендую.

Интуиция подсказывает SQLite. И не принимать ваши посты всерьез. Интересно почему...
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493368
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovalekcvpА он их разве не конвертирует в charset подключения?

Нет. Нечем.

Windows клиенту нечем?.. У винды полно APIшек для работы с кодировками.
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493370
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpWindows клиенту нечем?.. У винды полно APIшек для работы с кодировками.

Но у него нет главного: знания из какого коннекта пришёл конкретный статус-вектор и какой
кодовой странице соответствует его чарсет. Этого даже я в своём патче не сделал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493382
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovalekcvpWindows клиенту нечем?.. У винды полно APIшек для работы с кодировками.

Но у него нет главного: знания из какого коннекта пришёл конкретный статус-вектор и какой
кодовой странице соответствует его чарсет. Этого даже я в своём патче не сделал.

То есть он никаких "хэндлов" не сохраняет при соединении с сервером, а только транслирует запросы туда-обратно?
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493527
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpЖалко конечно отказываться от Firebird, но что делать?
что-то никто не написал, что указанное сообщение приходит НЕ от Firebird, а от операционной системы. Firebird в данном случае просто транслирует это сообщение, ему пофиг что там написано и в какой оно кодировке. Получил - передал.
Так что вы жалуетесь на винду, а отказаться хотите от ФБ, так? :-)
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493528
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перепутал автора сообщения, извините.
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493531
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot kdv]alekcvp...указанное сообщение приходит НЕ от Firebird, а от операционной системы. Firebird в данном случае просто транслирует это сообщение, ему пофиг что там написано и в какой оно кодировке. Получил - передал.
...
А нет ли возможности организовать на серверной стороне (перед передачей сообщения клиенту), силами FB, перекодирование в кодировку коннекта клиента из кодировки локали ОС сервера?
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493544
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvТак что вы жалуетесь на винду, а отказаться хотите от ФБ, так? :-)
Ну винда всегда все сообщения выдаёт либо в UTF-16, либо в WinXXXX. А птичка может работать с разными кодировками и позволяет выбирать с какой ты хочешь работать, поэтому было бы логично и ожидаемо, если бы она при этом ВСЕ сообщения выдавала в выбранной кодировке. А то по такой логике: зачем тогда текст из таблиц перекодировать? В какой кодировке данные в базе хранятся - пусть в такой и выдаёт приложению, а вы там сами разбирайтесь.
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493546
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или в fb_interpret (или какая там функция формирует текст ошибки?) передавать параметр - желаемую кодировку, и чтобы он там перекодировал сообщения винды в нужную кодировку. Ведь проблема в том, что кодировку сообщения наше приложение знает, в отличие от клиентской библиотеки, но перекодировать уже сформированное сообщение с разными кодировками - это велосипед с квадратными колёсами.
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493550
FastBaseDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvalekcvpЖалко конечно отказываться от Firebird, но что делать?
что-то никто не написал, что указанное сообщение приходит НЕ от Firebird, а от операционной системы.

Я написал в третьем предложении первого сообщения.
kdvТак что вы жалуетесь на винду, а отказаться хотите от ФБ, так? :-)
А как мне объяснить пользователю что после нажатия "Save As..." ему можно указывать имя файла только английскими или символами из локали винды?
И ещё я использую для работы с временными файлами "C:\Users\%USER_NAME%\AppData\Local\", как все нормальные люди. А Firebird с такими путями работать не умеет если в %USER_NAME% юникод или не ансишный символ.
Я люблю Firebird, но здравый смысл я люблю больше.
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493556
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FastBaseDevА как мне объяснить пользователю что после нажатия "Save As..." ему можно указывать имя
файла только английскими или символами из локали винды?

"Save As..." и клиент-сервер? Ты реально сделал плохой выбор.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кодировка текста ошибки
    #39493568
FastBaseDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovFastBaseDevА как мне объяснить пользователю что после нажатия "Save As..." ему можно указывать имя
файла только английскими или символами из локали винды?

"Save As..." и клиент-сервер? Ты реально сделал плохой выбор.

Дмитрий, у меня программа умеет работать с базами как с файлами (вспомните Access).
И ещё она умеет работать по сети, если нужно (без использования сетевого протокола Firebird)
И ещё умеет в многосерверной конфигурации с синхронизацией, если нужно.

"Save As..." есть только в первом случае, где с файлами идёт работа как в Access. И это наиболее распространённый сценарий использования.
Очень удобно открывать файлы по двойному щелчку, или прям из интернета:

Пример с сайта не откроется на большинстве компьютеров с виндой. Просто из-за имени файла.
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 1 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Кодировка текста ошибки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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