2014-09-18 5 views
-2

Недавно я преобразовал мою базу данных latin1 в utf8. все мои сопоставления и свойства соединения установлены на utf8, также я использую & useUnicode для url драйвера mysql.Кодирование Java, подключение к базе данных

Вопрос в том, что, поскольку Java хранит строки в utf16, мне нужно сделать какое-то преобразование, или же драйвер конвертирует его на лету с utf16 в utf8 для соединения и наоборот? Я вообще спрашиваю, но и для весеннего jdbc, который мы в настоящее время используем.

Редактировать: Скажем, пользователи набирают любой тип строки независимо от того, какая кодировка находится в swing JTextField. Java принимает его, преобразует его в utf16 и сохраняет его. если я сказал моему драйверу jdbc, что все данные, которые я отправил, уже есть utf8, и он не должен преобразовывать, как это работает. Конечно, я делал тесты, и все было хорошо, но почему?

+2

Почему бы вам не попробовать и не рассказать нам? :) –

+0

Это слишком хорошо, чтобы продлиться ... так что я лучше спрошу :) – JavaDesire

+0

java не «хранит» строки в UTF-16, он манипулирует символами как Unicode, внутреннее представление не имеет значения, вы рассказываете, как вы хотите «хранить» их извне. Вы оставляете это до значения по умолчанию, которое является вашим выбором. Большинство людей делают их внешне как UTF-8. –

ответ

0

Конверсия между utf16 и utf8 является двусторонней улицей. Поэтому я не думаю, что вам нужно сделать какое-либо преобразование, если вы укажете «прочитайте это как utf8» в своем java-коде, когда это возможно. Если вы читаете необработанную строку из базы данных, вам, вероятно, вообще не нужно указывать, что ваш драйвер/ORM должен взять это, когда он обнаруживает кодировку из вашего db.

Смежные вопросы