powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с кодировкой
10 сообщений из 10, страница 1 из 1
Проблема с кодировкой
    #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
Проблема с кодировкой
    #34601937
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос на засыпку, oldString как достается?
...
Рейтинг: 0 / 0
Проблема с кодировкой
    #34601940
igor_ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
oldString - это то, что вводится в поле ввода на форме (тоесть пароль в кирилеце)
...
Рейтинг: 0 / 0
Проблема с кодировкой
    #34601984
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igor_choldString - это то, что вводится в поле ввода на форме (тоесть пароль в кирилеце)

блин... ты мне покажи как ты его в коде получаешь...
...
Рейтинг: 0 / 0
Проблема с кодировкой
    #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
Проблема с кодировкой
    #34602398
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При подключении к БД указали кодировку?
Выведете в лог имя пользователя перед запросом к БД, имхо в этом месте ошибка.
...
Рейтинг: 0 / 0
Проблема с кодировкой
    #34602431
igor_ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже пробывал выводить в лог.
Но в итоге мне в лог выдает вместо кирилицы крякозяблики.
...
Рейтинг: 0 / 0
Проблема с кодировкой
    #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
Проблема с кодировкой
    #34604927
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще он вроде стратсом а не спрингом пользуется...
...
Рейтинг: 0 / 0
Проблема с кодировкой
    #34605109
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, если мы указали кодировку на странице, после сабмита формы в экшне, должно быть все в порядке. Единственное место потенцияльной ошибки это запрос. Нужно руками установить кодировку БД при соединении. Ошбка имхо там.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с кодировкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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