2016-01-03 2 views
4

У меня есть проект Maven JavaFX в базе данных Eclipse и Firebird с UTF-8 кодирование таблиц (данные в таблицах на русском языке). Когда я пытаюсь запустить его из Eclipse с помощью команды jfx:run - это было успешно, и в TableView я вижу, что все данные верны.Кодирование данных TableView в JavaFX

enter image description here

Но, когда я пытаюсь создать родной инсталлятор с командой jfx:native и результат установки пакета, все данные в TableViews неправильна кодировка (поиск по интернету получите подсказку, что нужно конвертировать данные из UTF-8 в WINDOWS-1251).

enter image description here

код для заполнения данных из базы данных:

private class GetClientListTask extends Task<ObservableList<Client>> { 
     @Override 
     protected ObservableList<Client> call() throws Exception { 
      try (Connection connection = DriverManager.getConnection(App.DB_CONNECTION_STRING, App.DB_USERNAME, App.DB_PASSWORD)) { 
       com.zvpblog.KomstarService.model.jooq.tables.Client t = com.zvpblog.KomstarService.model.jooq.tables.Client.CLIENT; 
       DSL.using(connection). 
       selectFrom(t). 
       orderBy(t.CLIENTID.desc()). 
       fetch(). 
       map(rs -> new Client(rs.getClientid(), DateTimeUtils.convertToLocalDate(rs.getRegdate()), rs.getLname(), rs.getFname(), rs.getMname(), rs.getGender(), DateTimeUtils.convertToLocalDate(rs.getBirthdate()), rs.getAddress(), rs.getPhone())). 
       forEach(c -> clients.add(c)); 
       clientTableViewData = FXCollections.observableArrayList(clients); 
       return clientTableViewData;    
      } catch (SQLException e) { 
       LOGGER.error(e); 
       return null; 
      }  
     } 
    } 

Почему при кодировании в режиме запуска правильно, но в родном пакете неверен?

+0

Я вижу, что заголовки в порядке. Откуда вы заполняете данные? –

+0

@ Eng.Fouad Да, все метки элементов пользовательского интерфейса являются точными, только данные из базы данных являются неправильной кодировкой. Добавить код для публикации (я вызываю службу в 'Platform.runLater' в' init'). –

ответ

1

Установить свойства подключения charSet и encoding до UTF8 решена проблема с заполнением данных из базы данных и вводом данных в базу данных.

... 
Properties connectionProperties = new Properties(); 
... 
connectionProperties.put("charSet", "UTF8"); 
connectionProperties.put("encoding", "UTF8"); 
... 
Connection connection = DriverManager.getConnection(App.DB_CONNECTION_STRING, App.connectionProperties) 
...