Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с кодировкой / 10 сообщений из 10, страница 1 из 1
18.06.2007, 13:29:54
    #34601711
igor_ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой
Я вот столкнулся с такой проблемой:
Есть web-приложение с формой авторизации, с которой полученные логин и пароль вставляются в запрос к БД (Firebird). Для формы установлено кодировку UTF-8.
Если приложение запустить на машине с win-кодировокой и ввесть пароль кирилицей, то выдает ошибку:

12:17:18,284 WARN [JDBCExceptionReporter] SQL Error: 335544321, SQLState: HY000
12:17:18,284 ERROR [JDBCExceptionReporter] GDS Exception. 335544321. arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets

(причем операция типа new String(oldString.getBytes("UTF-8"), "Cp1251") тоже ничего не дает)

Може кто-то сталкивался с подобным?
...
Рейтинг: 0 / 0
18.06.2007, 14:18:56
    #34601937
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой
вопрос на засыпку, oldString как достается?
...
Рейтинг: 0 / 0
18.06.2007, 14:20:33
    #34601940
igor_ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой
oldString - это то, что вводится в поле ввода на форме (тоесть пароль в кирилеце)
...
Рейтинг: 0 / 0
18.06.2007, 14:29:20
    #34601984
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой
igor_choldString - это то, что вводится в поле ввода на форме (тоесть пароль в кирилеце)

блин... ты мне покажи как ты его в коде получаешь...
...
Рейтинг: 0 / 0
18.06.2007, 15:10:58
    #34602163
igor_ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой
Реализовано все следующим образом:
1) В форме, реализованная с использованием Struts
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
<%@ page language="java"%>
<%@ page contentType="text/html; charset=UTF-8"%>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<table>
        <tr>
          <td height="50"></td>
        </tr>
<logic:messagesPresent>
        <tr>
          <td><span  class ="errorHeader"><bean:message key="errors.header"/></span></td>
        </tr>
        <tr>
          <td><span  class ="error"><html:messages id="error" property="loginFailed"><bean:write name="error"/></html:messages></span></td>
        </tr>
        <tr>
          <td><span  class ="error"><html:messages id="error" property="userLogin"><bean:write name="error"/></html:messages></span></td>
        </tr>
        <tr>
          <td><span  class ="error"><html:messages id="error" property="userPassword"><bean:write name="error"/></html:messages></span></td>
        </tr>
        <tr>
          <td><hr  class ="dark"></td>
        </tr>
</logic:messagesPresent>
  <tr>
    <td>
<html:form action="/login" method="post">
<table  class ="main"  class ="main">
    <thead>
	<tr>
        <th  class ="sortable" colspan="2"><bean:message key="userLogin.title"/></th>
	</tr>
	</thead>
	<tr  class ="odd">
        <td><bean:message key="userLogin.display"/>:</td>
        <td><html:text name = "loginForm" property="userLogin" styleClass="text"/></td>
    </tr>
    <tr  class ="even">
        <td><bean:message key="userPassword.display"/>:</td>
        <td><html:password name = "loginForm" property="userPassword" styleClass="text"/></td>
    </tr>
    <tr  class ="odd">
        <td colspan="2" align="center">      
          <html:submit property="submit" styleClass="button">
            <bean:message key="button.login"/>
          </html:submit>
        </td>
    </tr>
</table>
</html:form>
    </td>
  </tr>
  <tr>
     <td height="50"></td>
  </tr>
</table>

пользователь вводит логин и пароль.

2) После того как пользователь нажал кнопку на форме, вызывается обработчик формы, в методе которого выполняеются следующие строки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 try  
{
	 if  ((user = UserService.getInstance().getUser(loginForm.getUserLogin(),
		loginForm.getUserPassword())) !=  null ) 
	systemUser = user.getUserForm();
}
 catch  (Exception e) 
{
	log.error(" (LoginAction.execute): " + e.getMessage() + ";host=" + request.getRemoteHost());
}

где user - это Bean-класс с полями для данных пользователя.
UserService - модуль, в котором описаны методы для обращения к БД.



3) И собственно сам метод getUser:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
			//получение данных пользователя по логину и паролю
	 public  User getUser(String login, String password)  throws  HibernateException 
	{
		Session session =  null ;
		Transaction transaction =  null ;
		User user =  null ;
		List users =  null ;
		 try  
		{
			session = HibernateSessionFactory.currentSession();
			transaction = session.beginTransaction();
			Criteria criteria = session.createCriteria(User. class );
			criteria.add(Expression.eq("userLogin", login));
			criteria.add(Expression.eq("userPassword", password));
			criteria.add(Expression.eq("userActive", "Y"));
			users = criteria.list();
			
			 if  (!users.isEmpty()) 
				 for  (Iterator it = users.iterator(); it.hasNext();) 
					user = (User)it.next();
			
			transaction.commit();
			HibernateSessionFactory.closeSession();
		}
		 catch  (Exception e) 
		{
			log.error(" (UserService.getUser(login, password)): " + e.getMessage());
			 if  (transaction !=  null )
				transaction.rollback();

			 throw   new  RuntimeException(e);
		}
		 finally  
		{
			HibernateSessionFactory.closeSession();
		}
    
		 return  user;
	}
...
Рейтинг: 0 / 0
18.06.2007, 16:04:27
    #34602398
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой
При подключении к БД указали кодировку?
Выведете в лог имя пользователя перед запросом к БД, имхо в этом месте ошибка.
...
Рейтинг: 0 / 0
18.06.2007, 16:16:45
    #34602431
igor_ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой
Уже пробывал выводить в лог.
Но в итоге мне в лог выдает вместо кирилицы крякозяблики.
...
Рейтинг: 0 / 0
19.06.2007, 13:58:06
    #34604820
Макарон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой
фильтр поможет такой в web.xml:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter- class >org.springframework.web.filter.CharacterEncodingFilter</filter- class >
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF- 8 </param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  
...
Рейтинг: 0 / 0
19.06.2007, 14:26:12
    #34604927
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой
вообще он вроде стратсом а не спрингом пользуется...
...
Рейтинг: 0 / 0
19.06.2007, 15:13:50
    #34605109
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой
Итак, если мы указали кодировку на странице, после сабмита формы в экшне, должно быть все в порядке. Единственное место потенцияльной ошибки это запрос. Нужно руками установить кодировку БД при соединении. Ошбка имхо там.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с кодировкой / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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