Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно добавлять кириллический текст в БД с ActionForm / 8 сообщений из 8, страница 1 из 1
01.03.2006, 14:27
    #33573832
sednivo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно добавлять кириллический текст в БД с ActionForm
Строчки с ArticleForm поступают на ArticleDTO, потом я хочу их добавить в базу даных:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
sQuery = "INSERT INTO articles VALUES (null, '"+
 article.getName()+"','"+
article.getFirst_par()+"','"+
article.getText()+"',"+
article.getUser_id()+"," +
"now(),'"+
article.getFoto_name()+"')";


DataOutputStream out =  new  DataOutputStream( new  FileOutputStream("/home/wasyl/tmp/log.txt", true));

out.write(sQuery.getBytes("Cp1251"));
out.write("\n".getBytes());
out.write(sQuery.getBytes("utf-8"));
out.write("\n".getBytes());
out.write(sQuery.getBytes());
out.write("\n".getBytes());

В utf-варианте получаю в файле стоку в какой-то непонятной кодировке, в других вариантах только знаки вопроса вместо кириллических букв.

БД -- mysql, работаю со Struts-ом
...
Рейтинг: 0 / 0
01.03.2006, 14:33
    #33573860
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно добавлять кириллический текст в БД с ActionForm
Проверьте, уважаемый:

а) таблицы должны быть сконфигурированы для UTF-8:

CHARACTER SET utf8 COLLATE utf8_general_ci

б) соединение должно быть сконфигурировано для него же:

jdbc:mysql://localhost:3306/dbName?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
...
Рейтинг: 0 / 0
01.03.2006, 17:05
    #33574692
sednivo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно добавлять кириллический текст в БД с ActionForm
На самом деле я хочу, чтобы в БД были данные в windows-1251 кодировке.

Я думаю, что проблема не в mysql, так как sql-скрипт, где в базу додаются даные в кодировке cp-1251, добавляет все корректно.

Я не знаю, как мне в коде java сформировать запрос на добавления данных в БД в кодировке cp1251??
...
Рейтинг: 0 / 0
01.03.2006, 17:53
    #33574888
Макарон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно добавлять кириллический текст в БД с ActionForm
когда-то давным давно писал так:

Код: plaintext
1.
request.setCharacterEncoding("Windows-1251");
response.setContentType("text/html; charset=Windows-1251");
...
Рейтинг: 0 / 0
01.03.2006, 18:55
    #33575063
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно добавлять кириллический текст в БД с ActionForm
sednivoНа самом деле я хочу, чтобы в БД были данные в windows-1251 кодировке.

Ну, определи таблицы и соединение соответственно:

а) таблицы должны быть сконфигурированы для UTF-8:

CHARACTER SET cp1251 COLLATE cp1251_general_ci

б) соединение должно быть сконфигурировано для него же:

Код: plaintext
jdbc:mysql://localhost: 3306 /dbName?autoReconnect=true&useUnicode=true&characterEncoding=Cp1251

Да, Макарон грамотно советует насчет запроса / ответа, только маленько путается в обозначениях Java и HTTP charsets: перед отправкой ответа следует указать

Код: plaintext
response.setContentType("text/html; charset=windows-1251");

(ну, или "text/xml; charset=windows-1251" - смотря какой контент), а перед обработкой запроса

Код: plaintext
request.setCharacterEncoding("Cp1251");
...
Рейтинг: 0 / 0
01.03.2006, 18:56
    #33575067
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно добавлять кириллический текст в БД с ActionForm
Пардон, вверху должно быть

а) таблицы должны быть сконфигурированы для Cp1251:
...
Рейтинг: 0 / 0
02.03.2006, 01:50
    #33575438
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно добавлять кириллический текст в БД с ActionForm
Я так пишу:
PreparedStatement pstatement=connection.prepareStatement(SQLInsertString.toString());
Bean.getSomeField().getBytes("ISO-8859-1");
pstatement.executeUpdate();
...
Рейтинг: 0 / 0
02.03.2006, 04:44
    #33575471
sednivo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно добавлять кириллический текст в БД с ActionForm
Оказывается я request.setCharacterEncoding("Cp1251"); не там делал, его надо вызывать ни в jsp-файле, ни в Action.execute, так как там ActionForm уже заполнено соответствующим request-ом.

Я написал CustomRequestProcessor и делал request.setCharacterEncoding там.

Всем большое спасибо за помощь.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно добавлять кириллический текст в БД с ActionForm / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]