powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Java EE (DataInputStream UTF-8) проблема с кодировкой
3 сообщений из 3, страница 1 из 1
Java EE (DataInputStream UTF-8) проблема с кодировкой
    #38398124
psyh103
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Бьюсь уже два дня над проблемой с кодировкой.

Исходные данные:
JDK 1.7
Java EE-7
Glassfish 4

Два enterprise приложения:
1. Имеет сервлет, который на POST запрос выводит на экран:
Код: java
1.
2.
3.
 PrintWriter out, int count) {
        out.print("Ответ");
}



2. Приложение делает POST запрос к первому и получает его "ответ".

вот так:
Код: java
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.
public static void post() throws java.net.ProtocolException, MalformedURLException, IOException {

        URL url = new URL("http://localhost:8080/ServletJSF-war/RequestServlet");     

        HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
        urlConn.setDoInput (true);
        urlConn.setRequestProperty("Accept-Charset", "UTF-8");
        urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        urlConn.setDoOutput (true);
        urlConn.setUseCaches (false);
        try {
            urlConn.setRequestMethod("POST");
        } catch (ProtocolException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            urlConn.connect();
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        DataInputStream input = null;

        // Get response data.
        
        String str = null;
        try {
            input = new DataInputStream (urlConn.getInputStream());
            while (null != ((str = input.readLine()))) {
                System.out.println(str);
            }
            input.close();
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }



Но в итоге, вместо слова "ответ", я получаю - абракадабру.

Не помогла мне и такая конструкция:
Код: java
1.
2.
3.
4.
5.
6.
 BufferedReader rd = new BufferedReader(
                    new InputStreamReader(urlConn.getInputStream(), "UTF-8"));
            while (null != ((str = rd.readLine()))) {
                System.out.println(str);
            }
            rd.close();



Стал искать в настройках Glassfish. Может быть там проблема?
Не смог найти ни sun-web.xml, ни glassfish-web.xml.
Нашел default-web.xml - там поменял кодировку на UTF-8 - не помогло.
...
Рейтинг: 0 / 0
Java EE (DataInputStream UTF-8) проблема с кодировкой
    #38398276
greenpo1son
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PrintWriter out, int count) {
out.print("Ответ");
}

PrintWriter автоматически кодирует на выход сообщение с UTF-16 (под которой работает java и String в Java) в кодеровку по умолчанию. Попробуйте через проперти определить системную кодировку и вместо UTF-8 поставить её.
Хотя мб я ошибаюсь.
...
Рейтинг: 0 / 0
Java EE (DataInputStream UTF-8) проблема с кодировкой
    #38398893
psyh103
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
После огромного количества тыков и вытыков этого UTF-8 куда только можно, пришел к окончательному выводу, что дело в Glassfish. и его кодировке по умолчанию ISO-8859-1, которая отправляла response encoding = ISO-8859-1.
Я ее так и не смог победить на уровне настройки сервера, но в коде у отправителя добавил response.setContentType("text/html; charset=UTF-8");

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


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