Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вместо UTF-8 получаем ISO-8859-1. / 12 сообщений из 12, страница 1 из 1
06.10.2005, 17:03
    #33309702
Lubomyr.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
Имеем
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
        request.setCharacterEncoding("UTF-8");
	HttpSession session = request.getSession(true);
        ........
	filter = request.getParameter("filter");

         System.out.println( "Filter: " + filter); //выводит ерунду.
         String nFilter =  new  String(filter.getBytes("ISO-8859-1"), "UTF-8");
         System.out.println( "Filter 2: " + nFilter); //выводит что надо.
то есть getParameter интерпретирует параметр в кодировке ISO-8859-1 не смотря на request.setCharacterEncoding("UTF-8"). Перед setCharacterEncoding вызовов request.getParameter не было.
Это под Линукс. Под Вин. работает нормально.
Может кто-то объяснить где собака зарыта?
...
Рейтинг: 0 / 0
06.10.2005, 20:15
    #33310232
mozheyko_d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
Lubomyr.Имеем
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
        request.setCharacterEncoding("UTF-8");
	HttpSession session = request.getSession(true);
        ........
	filter = request.getParameter("filter");

         System.out.println( "Filter: " + filter); //выводит ерунду.
         String nFilter =  new  String(filter.getBytes("ISO-8859-1"), "UTF-8");
         System.out.println( "Filter 2: " + nFilter); //выводит что надо.
то есть getParameter интерпретирует параметр в кодировке ISO-8859-1 не смотря на request.setCharacterEncoding("UTF-8"). Перед setCharacterEncoding вызовов request.getParameter не было.
Это под Линукс. Под Вин. работает нормально.
Может кто-то объяснить где собака зарыта?

Метод не GET случаем?
...
Рейтинг: 0 / 0
07.10.2005, 10:38
    #33310855
Lubomyr.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
mozheyko_dМетод не GET случаем?

В данном случае GET.
Проблемма в том что с POST та же ситуация.
...
Рейтинг: 0 / 0
07.10.2005, 10:51
    #33310896
mozheyko_d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
А для response почему не выставили кодировку?
...
Рейтинг: 0 / 0
07.10.2005, 11:30
    #33311077
Lubomyr.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
mozheyko_dА для response почему не выставили кодировку?

Везде стоит
response.setContentType("text/html; charset=UTF-8");
----
Дело в том что на сервер приходит в UTF-8, а сервлет думает что ISO-8859-1.
Вообще мне кажется что проблемма где-то в жосткой кодировке JBOSSa или JVM данной версии,. или библиотек..
...
Рейтинг: 0 / 0
07.10.2005, 11:50
    #33311163
mozheyko_d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
Lubomyr. mozheyko_dА для response почему не выставили кодировку?

Везде стоит
response.setContentType("text/html; charset=UTF-8");
----
Дело в том что на сервер приходит в UTF-8, а сервлет думает что ISO-8859-1.
Вообще мне кажется что проблемма где-то в жосткой кодировке JBOSSa или JVM данной версии,. или библиотек..

А покажите весь метод сервлета, в котором это происходит.
...
Рейтинг: 0 / 0
07.10.2005, 12:11
    #33311260
Lubomyr.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
mozheyko_dА покажите весь метод сервлета, в котором это происходит.

Вот:
Код: 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.
61.
	 protected   void  doGet(HttpServletRequest request,
			HttpServletResponse response)  throws  ServletException, IOException {
		//TODO Method stub generated by Lomboz
		request.setCharacterEncoding("UTF-8");
		processRequest(request, response);
		
	}

	 protected   void  doPost(HttpServletRequest request,
			HttpServletResponse response)  throws  ServletException, IOException {
		//TODO Method stub generated by Lomboz
		request.setCharacterEncoding("UTF-8");
		processRequest(request, response);
	}



// processRequest очень большой, привожу только часть которая выполнятся при данных условиях

 protected   void  processRequest (HttpServletRequest request, HttpServletResponse response)
     throws  ServletException, IOException{
	String buildUrl= null ;
	String objectId= null ;
	String filter= null ;
	request.setCharacterEncoding("UTF-8");
	HttpSession session = request.getSession(true);
	request.setCharacterEncoding("UTF-8");
	String userAction = request.getParameter("useraction");
	objectId = request.getParameter("id");
	filter = request.getParameter("filter");
	 if  (userAction== null ) {buildUrl=LOGIN_SCREEN;}
	 else {

// куча ifов ...
		
		 if  (userAction.equals("setfilter")){
			buildUrl=ITEMS_SCREEN;
			response.setContentType("text/html; charset=UTF-8");
			System.out.println( "Filter: " + filter);  //ерунду выводит
			//filter=java.net.URLEncoder.encode(filter,"UTF-8"); 
			//response.sendRedirect(response.encodeURL(ITEMS_SCREEN+"?filter="+ filter));
			System.out.println( "Request encoding: " + request.getCharacterEncoding());//UTF-8

			System.out.println( "Responce Encoding: " + response.getCharacterEncoding() ); //UTF-8
			System.out.println( "Locale: " + java.util.Locale.getDefault().getCountry() );
						
			javax.servlet.RequestDispatcher rd2 = getServletContext().getRequestDispatcher(ITEMS_FILTERED);
			String nFilter =  new  String(filter.getBytes("ISO-8859-1"), "UTF-8");
						
			request.setAttribute("filter",filter);
			System.out.println( "Filter encoded var 2 : " + nFilter); //то, что надо!
			
			rd2.forward(request,response);
			
			 return ;
		} 
// blah blah blah..


	}

...
Рейтинг: 0 / 0
07.10.2005, 12:52
    #33311373
mozheyko_d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
Блин, только сейчас заметил, что пишете в System.out
т.е. вы читаете то что JBoss на консоль выводит или в логе?
...
Рейтинг: 0 / 0
07.10.2005, 13:09
    #33311425
Lubomyr.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
mozheyko_dБлин, только сейчас заметил, что пишете в System.out
т.е. вы читаете то что JBoss на консоль выводит или в логе?

В данном случае на консоль или лог. Но это я вывожу с целью дебага, так как с параметром было что-то "не то" :(
Этот параметр я потом отобржаю на JSP, где он также выглядит некрасиво.
Передаю из сервлета
Код: plaintext
1.
2.
3.
4.
response.setContentType("text/html; charset=UTF-8");
request.setAttribute("filter",filter);
javax.servlet.RequestDispatcher rd2 = getServletContext().getRequestDispatcher(ITEMS_FILTERED);
rd2.forward(request,response);
показываю:
Код: plaintext
1.
<b>Фильтр</b>  <input type="text" name="filter" size="50" width="20%" value="<%=filter%>"/>
Страница в UTF-8:
Код: plaintext
1.
2.
3.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"  import ="java.sql.*,
 javax.sql.*, javax.naming.*, org.apache.commons.beanutils.*" %>
.....

Кстати, проблемма там где Get, я с Post не проверял. Ведь для всякого рода фильтров предпочтительнее Get...
...
Рейтинг: 0 / 0
07.10.2005, 13:33
    #33311497
Lubomyr.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
Post работает нормально. Проблемма с Get!
Хорошо было бы ее решить. Под Windows все работает ОК.
...
Рейтинг: 0 / 0
07.10.2005, 17:17
    #33312373
mozheyko_d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
Lubomyr.
...
Страница в UTF-8:
Код: plaintext
1.
2.
3.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"  import ="java.sql.*,
 javax.sql.*, javax.naming.*, org.apache.commons.beanutils.*" %>
.....
...


Это ещё не всё. Чтобы указать request-encoding лучше явно его вызови:
Код: plaintext
1.
2.
3.
4.
5.
6.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"  import ="java.sql.*,
 javax.sql.*, javax.naming.*, org.apache.commons.beanutils.*" %>
<%
request.setCharacterEncoding("UTF-8");
System.out.println(request.getParameter("filter"));
%>
...
Рейтинг: 0 / 0
07.10.2005, 17:54
    #33312490
Lubomyr.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо UTF-8 получаем ISO-8859-1.
mozheyko_d
Это ещё не всё. Чтобы указать request-encoding лучше явно его вызови:

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


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