Текущая версия JayBird имеет ограниченную поддержку специальных символов в DatabaseName. Есть несколько вариантов, которые можно использовать для решения этой проблемы, но если они действительно работают, это сильно зависит от версии Firebird и стандартного набора символов ОС (где работает Firebird).
Вариант 1: использовать свойство связи filename_charset=<name of charset>
где <name of charset>
- это набор символов по умолчанию для операционной системы, в которой работает сервер Firebird.
Например:
jdbc:firebirdsql://myserver/mydatabase?filename_charset=Cp1252
Вариант 2 (Firebird 2.5 или выше): использовать обходной путь, описанный в JDBC-251:
Запустить приложение Java с -Dfile.encoding=UTF8
и включают utf8_filename=1
в соединительной URL:
jdbc:firebirdsql://myserver/mydatabase?utf8_filename=1
При использовании этой опции убедитесь, что вы уже указали символы соединения t с использованием свойства соединения charSet
, localEncoding
или local_encoding
(для имен символов символов Java) и/или encoding
или lc_ctype
(для имен наборов символов Firebird). Если нет, вы используете набор символов Firebird NONE
, который использует набор символов по умолчанию JVM, и вам нужно будет установить charSet
в стандартную кодировку JVM по умолчанию для предотвращения проблем с преобразованием набора символов из-за измененного значения file.encoding
(в некоторых случаях - в дополнение к указанию charSet
- вы также можете явно установить encoding
в NONE
).
Вариант 3: Определить псевдоним только с символами ASCII в aliases.conf
Жар-птицы сервера для базы данных и подключения с помощью этого псевдонима вместо:
jdbc:firebirdsql://myserver/thealias
Раскрытие: Я один из разработчиков JayBird
Спасибо. Вариант 2 работает. :) – lukasic
@ LukášKasič Убедитесь, что вы указываете набор символов соединения, в противном случае это изменение может привести к неожиданным преобразованиям символов, поскольку оно будет использовать набор символов соединения «NONE», который использует кодировку по умолчанию для JVM для преобразования. –
приятно знать, еще раз спасибо. Ты спас меня не менее 2 часов. – lukasic