Как работает кодировка символов JDBC-соединения? - PullRequest
0 голосов
/ 07 сентября 2018

В URL JDBC вы указываете кодировку символов.

например:

jdbc:mysql://host:3306/db?characterEncoding=UTF8

.

jdbc:teradata://host/DBS_PORT=1025,DATABASE=Orders,CHARSET=UTF8

Я пытаюсь понять, как это на самом деле работает.

Значит ли это, что клиент специально спрашивает сервер, в какой кодировке символов он хочет получить данные?

Если фактические данные сохраняются в другой кодировке символов в БД (скажем, Shift_JIS), выполняет ли сервер БД преобразование кодировки перед отправкой данных клиенту? (в этом примере от SJIS до UTF-8?)

1 Ответ

0 голосов
/ 07 сентября 2018

Это не имеет прямого отношения к JDBC, но это конкретная деталь реализации для отдельных драйверов JDBC. Не все драйверы / базы данных позволяют указывать набор символов для подключения. Это может быть связано с тем, что их протокол всегда использует определенный набор символов или кодировка фиксирована для каждого столбца и сообщается вместе с данными. И если у драйвера действительно есть такое свойство, его эффекты будут различаться в зависимости от драйвера / системы баз данных и, возможно, даже для конкретной базы данных, таблицы или даже столбца.

Невозможно обобщить, что именно делает этот параметр над драйверами.


Мне уже трудно описать точные эффекты (и крайние случаи) набора символов соединения для драйвера JDBC, который я поддерживаю ... не говоря уже о том, чтобы рассмотреть / исследовать это для других драйверов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...