Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как конвертировать текст из одной кодировки в другую?

408
20 апреля 2008 года
Lei fang
265 / / 01.10.2005
Здравствуйте. Возникла у меня такая проблема.
Прога для работы с бд.
При добавлении записей в таблицу через нее, все русские буквы превращаются в ???? и так же хранятся в самой таблице. Если же в ручную в таблицу написать по русски, то все нормально и сохраняется и отображается.
Пришел к выводу, что нужно посылать текст в бд в формате юникода. Собственно в этом и вопрос. Есть у меня jTextArea и jTextField. Как сконвертировать текст введенный в них в юникод?
63
20 апреля 2008 года
Zorkus
2.6K / / 04.11.2006
У меня в подобной ситуации (WinXP, JDK 1.6.*) все русские данные отображаются корректно.
http://skipy.ru/technics/encodings.html - можно почитать еще, довольно интересно написано про кодировки.
Опиши подробней свои настройки.Сама БД в UTF8?
Если хочешь вручную управлять кодировками - используй конструктор класса String, который принимает вторым параметром кодировку символов, когда будешь получать содержимое компонента через getText().
Еще можно использовать декодеры/энкодеры из пакета java.nio.charset.*.
Но, это все оверкилы. По идее, все должно работать без этих ухищрений.
63
20 апреля 2008 года
Zorkus
2.6K / / 04.11.2006
Еще, вдогонку. Самое главное - как идет соединение с БД? Используется чистый JDBC, JPA, Hibernate, еще что-то? Параметры всего это - в студию!
408
20 апреля 2008 года
Lei fang
265 / / 01.10.2005
Код:
-- ----------------------------
CREATE TABLE `news` (
  `id` int(4) NOT NULL auto_increment,
  `timestamp` datetime NOT NULL,
  `posted` text NOT NULL,
  `captionRus` text NOT NULL,
  `messageRus` text NOT NULL,
  `captionEng` text NOT NULL,
  `messageEng` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `news` VALUES ('13', '2008-03-03 14:43:20', 'kos', 'тест', 'тестовое сообщение', 'asd', 'dsa');
INSERT INTO `news` VALUES ('19', '2008-04-20 13:12:16', 'Kosmos', '????? ????', '???????? ?????? ?????', 'test', 'test news');

Это дамп таблицы с записями.
Первый инсерт - я в навикате добавил эту запись: результат - в базе хранится все в русских буквах и в проге отображается русскими буквами
второй инсерт - сделан через прогу. В базе соответственно хранится в ??? и в проге отображается так же.

К базе коннектюсь с помощью mysql-connector-java-5.0.7-bin.jar. Это jdbc вроде...
 
Код:
Connection conn;
/*jdbc:mysql://127.0.0.1/db_name?user=root&password=test_pass*/
String conn_prop = "jdbc:mysql://" + strings.get(0) + "/" + strings.get(1) + "?" + "user=" + strings.get(2) + "&password=" + strings.get(3);
conn = DriverManager.getConnection(conn_prop);

М... вроде ничего интересного не упустил.
63
20 апреля 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: Lei fang
Это jdbc вроде...
 
Код:
Connection conn;
/*jdbc:mysql://127.0.0.1/db_name?user=root&password=test_pass*/
String conn_prop = "jdbc:mysql://" + strings.get(0) + "/" + strings.get(1) + "?" + "user=" + strings.get(2) + "&password=" + strings.get(3);
conn = DriverManager.getConnection(conn_prop);

М... вроде ничего интересного не упустил.


Конечно, JDBC. Строго говоря, любое соединение к БД в Java в конечном итоге идет через него, но поверх него может использоваться еще куча разных средств.
У меня есть подозрение, что проблема у тебя именно в настройке БД.
Для начала попробуй использовать следующие параметры (дополнительные) подключения - jdbc:mysql://host:port/dbname?[color=red]useUnicode=true&characterEncoding=utf8[/color]

408
20 апреля 2008 года
Lei fang
265 / / 01.10.2005
Спасибо!
 
Код:
String conn_prop = "jdbc:mysql://" + strings.get(0) + "/" + strings.get(1) + "?useUnicode=true&characterEncoding=utf8&" + "user=" + strings.get(2) + "&password=" + strings.get(3);

Вот так все работает как надо : )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог