Получение результатов с латинским кодом 1 с помощью JDBC - PullRequest
4 голосов
/ 05 апреля 2011

Я пытаюсь получить наборы результатов из базы данных MySQL, например JDBC, которая затем используется для создания отчетов в BiRT. Строка подключения настроена в BiRT.

База данных латинская1:

SHOW VARIABLES LIKE 'c%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     | 
| character_set_connection | latin1                     | 
| character_set_database   | latin1                     | 
| character_set_filesystem | binary                     | 
| character_set_results    | latin1                     | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
| collation_connection     | latin1_swedish_ci          | 
| collation_database       | latin1_swedish_ci          | 
| collation_server         | latin1_swedish_ci          | 
| completion_type          | 0                          | 
| concurrent_insert        | 1                          | 
| connect_timeout          | 5                          | 
+--------------------------+----------------------------+

Итак, я пытался исправить странно выглядящие результаты кодирования, которые возвращаются (немецкие символы). Я подумал, что для нас будет иметь смысл свойство characterSetResults для получения результирующего набора как «latin1», например:

jdbc:mysql://localhost:3306/statistics?useUnicode=true&characterEncoding=latin1&characterSetResults=latin1

Эта строка подключения завершается с ошибкой, и благодаря выводу я обнаружил, что это свойство:

characterSetResults=latin1

вызывает сбой соединения. Ошибка - длинная ошибка Java, которая мало что значит для меня. Начинается с:

org.eclipse.birt.report.data.oda.jdbc.JDBCException: There is an error in get connection, Communications link failure

Last packet sent to the server was 38 ms ago..
    at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.doConnect(JDBCDriverManager.java:262)
    at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.getConnection(JDBCDriverManager.java:186)
    at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.tryCreateConnection(JDBCDriverManager.java:706)
    at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.testConnection(JDBCDriverManager.java:634)
    at org.eclipse.birt.report.data.oda.jdbc.ui.util.DriverLoader.testConnection(DriverLoader.java:120)
    at org.eclipse.birt.report.data.oda.jdbc.ui.util.DriverLoader.testConnection(DriverLoader.java:133)
    at org.eclipse.birt.report.data.oda.jdbc.ui.profile.JDBCSelectionPageHelper.testConnection(JDBCSelectionPageHelper.java:687)
    at org.eclipse.birt.report.data.oda.jdbc.ui.profile.JDBCSelectionPageHelper.access$7(JDBCSelectionPageHelper.java:655)
    at org.eclipse.birt.report.data.oda.jdbc.ui.profile.JDBCSelectionPageHelper$7.widgetSelected(JDBCSelectionPageHelper.java:578)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)

Если я изменю это на:

 characterSetResults=utf8

строка подключения подключается без ошибок, но проблема с кодировкой остается.

Кто-нибудь знает правильный способ получения latin1? И да, я знаю, что нужно использовать UTF8, но это не моя база данных ...

Спасибо, что прочитали это, Стивен

Ответы [ 2 ]

0 голосов
/ 28 октября 2015

При указании кодировки символов на стороне клиента используйте имена в стиле Java ( Mysql connector-j-reference-charsets ). Поэтому предполагается, что он будет работать с использованием jdbc: mysql: // localhost:3306 / статистика? useUnicode = верно и characterEncoding = UTF-8 & characterSetResults = CP1252

0 голосов
/ 05 апреля 2011

После некоторого копания вы пробовали characterSetResults=ISO8859_1?Это эквивалентно latin1, и есть свидетельства того, что MySQL справляется с этим гораздо лучше.

У меня нет БД для проверки этого, но выглядит, как я читаю, точным, что вам нужно.1004 *

...