Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2011, 15:48   #1
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
Вопрос Кодировка при получении данных из WEB

Пишу очень простую программу: программа получает txt с определённого url и отображает содержимое в StringItem. Возникает проблема с кодировкой.

Скрипт на сервере генерирует txt в кодировке UTF. Делаю запрос функцией, которую нашёл в примерах от Sun:
Код:
    StringBuffer buffer = new StringBuffer();

    void getViaStreamConnection(String url) throws IOException 
    {
        StreamConnection c = null;
        InputStream s = null;
        
        try {
            c = (StreamConnection)Connector.open(url);
            s = c.openInputStream();
            buffer.setLength(0);

            int ch;

            while ((ch = s.read()) != -1) {
                process((byte)ch);
            }
        } finally {
            if (s != null) {
                s.close();
            }

            if (c != null) {
                c.close();
            }
        }
    }
    
    void process(byte b) 
    {
        buffer.append((char)b);
    }
А вывожу полученные данные в StringItem:

Код:
stringItem.setText(buffer.toString());
Запускаю в эмуляторе и вижу иероглифы. В телефоне просто квадратики...

Это моя первая программа на J2ME. Как быть?
Никки вне форума Ответить с цитированием
Старый 02.01.2011, 23:58   #2
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Вопрос решил сам. InputStreamReader умеет преобразовывать кодировку, его и использовал следующим образом:

Код:
String Result = "";
StringBuffer buffer = new StringBuffer();

StreamConnection con = (StreamConnection)Connector.open(url);
InputStreamReader reader = new InputStreamReader(con.openInputStream(), "UTF-8");
buffer.setLength(0);
while ((ch = reader.read()) != -1) buffer.append((char)ch);
reader.close();
con.close();
Result = buffer.toString(); // тут результат!
Никки вне форума Ответить с цитированием
Старый 04.12.2013, 21:20   #3
Artorios
 
Регистрация: 04.10.2010
Сообщений: 3
По умолчанию

Спасибо,помогло!
Artorios вне форума Ответить с цитированием
Старый 28.12.2013, 19:17   #4
Marshal_A
Пользователь
 
Регистрация: 28.12.2013
Сообщений: 12
По умолчанию

файлы кстати также можно считывать
Цитата:
new InputStreamReader(поток, "UTF-8");
http://www.work-zilla.com?ref=177050
Marshal_A вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Иероглифы при получении СМС RIO Работа с сетью в Delphi 0 30.07.2010 00:04
Неудача при получении исходного кода страницы Alex Cones Работа с сетью в Delphi 8 18.05.2010 16:38
при получении из внешних данных segail Microsoft Office Excel 4 03.04.2010 16:03
Кодировка при вводе данных через php-myadmin и sql запросы serg-php PHP 4 27.09.2009 17:03
Распознавание тела письма при получении iamur Работа с сетью в Delphi 1 11.02.2008 17:33