Spec-Zone .ru
спецификации, руководства, описания, API

21.3.5.4. Используя Наборы символов и Unicode

Все строки, отправленные от драйвера JDBC до сервера, преобразовываются автоматически от собственной формы Unicode Java до клиентской кодировки символов, включая все запросы, отправленные, используя Statement.execute(), Statement.executeUpdate(), Statement.executeQuery() так же как все PreparedStatement и CallableStatement параметры с исключением использования набора параметров setBytes(), setBinaryStream(), setAsciiStream(), setUnicodeStream() и setBlob().

Число Кодировок Для каждого подключения

В MySQL Server 4.1 и выше, Connector/J поддерживает единственную кодировку символов между клиентом и сервером, и любым числом кодировок символов для данных, возвращенных сервером клиенту в ResultSets.

До MySQL Server 4.1, Connector/J, поддерживаемый единственная кодировка символов для каждого подключения, которая могла или быть автоматически обнаружена от конфигурации сервера, или могла быть сконфигурирована пользователем через useUnicode и characterEncoding свойства.

Установка Кодировки символов

Кодировка символов между клиентом и сервером автоматически обнаруживается на соединение. Вы определяете кодирование на сервере, используя character_set_server для версий сервера 4.1.0 и более новый, и character_set системная переменная для версий сервера, более старых чем 4.1.0. Драйвер автоматически использует кодирование, определенное сервером. Для получения дополнительной информации см. Раздел 10.1.3.1, "Набор символов сервера и Сопоставление".

Например, чтобы использовать 4-байтовые наборы символов UTF-8 с Connector/J, сконфигурируйте сервер MySQL с character_set_server=utf8mb4, и отпуск characterEncoding из строки подключения Connector/J. Connector/J тогда автоматически обнаружит установку UTF-8.

Чтобы переопределить автоматически обнаруженное кодирование на стороне клиента, используйте characterEncoding свойство в URL, используемом, чтобы соединиться с сервером.

Чтобы позволить многократным наборам символов быть отправленными от клиента, используйте кодирование UTF-8, любого, конфигурируя utf8 как набор символов сервера значения по умолчанию, или конфигурируя драйвер JDBC, чтобы использовать UTF-8 через characterEncoding свойство.

Определяя кодировки символов на стороне клиента, используйте имена стиля Java. Следующая таблица приводит имена набора символов MySQL и соответствующие имена стиля Java:

Таблица 21.26. MySQL к Java, Кодирующему Преобразования Имени

MySQL Character Set Name Имя Кодировки символов стиля Java
ascii US-ASCII
big5 Big5
gbk GBK
sjis SJIS (or Cp932 or MS932 for MySQL Server < 4.1.11)
cp932 Cp932 or MS932 (MySQL Server > 4.1.11)
gb2312 EUC_CN
ujis EUC_JP
euckr EUC_KR
latin1 Cp1252
latin2 ISO8859_2
greek ISO8859_7
hebrew ISO8859_8
cp866 Cp866
tis620 TIS620
cp1250 Cp1250
cp1251 Cp1251
cp1257 Cp1257
macroman MacRoman
macce MacCentralEurope
utf8 UTF-8
ucs2 UnicodeBig

Предупреждение

Не выпускайте запрос set names с Connector/J, поскольку драйвер не будет обнаруживать, что набор символов изменился, и будет продолжать использовать набор символов, обнаруженный во время начальной установки соединения.