Kaaboeld
@Kaaboeld
Web-разработчик

Как решить проблему с кодировкой в java проекте когда он в utf, а данные в win1251?

Проблема проявляется только, если запускать проект в linux(ubutu, netbeans, если это важно).
База firebird запущена в windows, если проект запущен так же в windows, то данные из базы отображаются "корректно", если в linux, то - "кракозябрами".

В настройках jdbc "везде" стоит utf8(изменение настроек на win1251 не влияют на результат), данные в базе win1251.
Если приложение в netbeans(с теми же настройками) запущено в windows всё корректно.

Условие:
Изменить кодировку в базе нельзя.
  • Вопрос задан
  • 8827 просмотров
Решения вопроса 1
Kaaboeld
@Kaaboeld Автор вопроса
Web-разработчик
jdbc.databaseurl=jdbc:firebirdsql:127.0.0.1/0000:D:/base/base.fdb?encoding=utf8&useUnicode=true&characterEncoding=utf8

127.0.0.1 - ip сервера
0000 - порт
D:/base/base.fdb - путь до базы(сервер на windows)


encoding=utf8

Так вот я испробовал много различных вариантов указания кодировки и не только в данном конфиге, и случайно наткнулся на параметр encoding, и вот именно он сработал установив его значением utf8.
Самое интересное что это решение работает при запуске проекта под linux(ubuntu), но при этом если проект запустить с этим параметром на windows, то там начинает проявляться именно та проблема с кодировкой которую я и пытался побороть и следовательно параметры после "пути до базы" приходится там удалять, а под linux ставить обратно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@bvp
Актуально ещё или нет..
Для нормального отображения данных из Firebird я использую Properties для параметров подключения

String conString = "jdbc:firebirdsql:192.168.0.5:bsklad";
...
paramConnection = new Properties();
paramConnection.setProperty("user", "beginner");
paramConnection.setProperty("password", "mayby");
paramConnection.setProperty("encoding", "WIN1251");
...
Class.forName("org.firebirdsql.jdbc.FBDriver");
connection = DriverManager.getConnection(conString, paramConnection);


Где крутится база не имеет значения! Имеет значение кодировка самой базы.
Ответ написан
Комментировать
zolt85
@zolt85
Программист
Я бы посмотрел в настройки Locale при запуске на Windows и на Linux.
Ответ написан
Applez
@Applez
Разраб
Конвертить при получении.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы