Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> InputStreamReader и виндовая кодировка 
:(
    Опции темы
Corwin
Дата 23.8.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.8.2005

Репутация: нет
Всего: нет



Есть задача: открыть некий URL и получить оттуда инфу. На самом деле по этом адресу лежит XML-файл, в котором есть русские буквы в кодировке Cp1251. При использовнии конструктора InputStreamReader(sc.openInputStream()) данные читаются, но при попытке вывода на дисплей русские буквы отображаются кракозяблями - оно и понятно, ведь default encoding - ISO8859_1. Пытаюсь указать явно, но InputStreamReader(sc.openInputStream(), "Cp1251") выдает UnsupportedEncodingException. Есть ли способ получить список поддерживаемых устройством кодировок? Неужто строки нужно вручную перекодировать?
PM MAIL ICQ   Вверх
polosatij
Дата 24.8.2005, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



а так smile

Код

InputStreamReader(sc.openInputStream(), "windows-1251") 





--------------------
PM   Вверх
Corwin
Дата 24.8.2005, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.8.2005

Репутация: нет
Всего: нет



2polosatij
По-всякому пробовал, не проходит... Пока что вручную перекодирую, но некрасиво это имхо... С другой стороны, ISO8859_1 поддерживает любой (или почти?) телефон. Хоть с совместимостью проблем не будет.
PM MAIL ICQ   Вверх
polosatij
Дата 24.8.2005, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



попробуй посмотреть, что за кодировка на нём в настоящий момент:

Код

import java.util.*;

public class Main {
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Properties prop = System.getProperties();
        Iterator it = prop.entrySet().iterator();
        Object obj;
        
        while(it.hasNext()) {
            obj = it.next();
            System.out.print(((Map.Entry)obj).getKey() + "= ");
            System.out.println(((Map.Entry)obj).getValue());
        }
    }
}


не знаю, есть ли все эти классы в j2me, но может на мысль какую натолкнёт..

посмотри ещё ISO8859-5.. но не знаю, прокатит ли для сотовых телефонов..


Добавлено @ 13:21
кодировка UCS2

smile

какой сотовый телефон?


Цитата(Corwin @ 24.8.2005, 12:52)
С другой стороны, ISO8859_1 поддерживает любой (или почти?) телефон.


я не наю.. я по-мойму просто уникодами это проблему решил (но могу ошибаться, давно дело было)..


посмотри здесь:

Способ локализации мидлетов smile

http://lib.juga.ru/article/articleview/99/1/16/

Это сообщение отредактировал(а) polosatij - 24.8.2005, 13:31


--------------------
PM   Вверх
polosatij
Дата 24.8.2005, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



и здесь

http://lib.juga.ru/article/articleview/103/1/16/

smile - "microedition.encoding"


Добавлено @ 13:38
Как локализовать мидлет. (Часть 2 - ResourseUTF8)

http://lib.juga.ru/article/articleview/67/1/16/ smile

Это сообщение отредактировал(а) polosatij - 24.8.2005, 13:39


--------------------
PM   Вверх
Corwin
Дата 24.8.2005, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.8.2005

Репутация: нет
Всего: нет



2polosatij
Эх, если б все так просто решалось smile Спасибо за советы, но нету в j2me ни System.getProperties() , ни Iterator-a smile По ссылкам этим уже ходил, да и все доступные статьи в сети перерыл. Телефон Nokia 7610. Может, конечно, в нокиевском апи и есть что-либо связанное с кодировками (хотя я не нашел), но завязываться на конкретный брэнд не есть гуд. Так что единственным приемлимым решением для меня оказалось: читаем как ISO8859_1, далее String преобразуем в char[], перекодируем ручками, и обратно в String. Вроде даже не тормозит. Хотя что будет с более слабыми моделями, еще неизвестно.
PM MAIL ICQ   Вверх
polosatij
Дата 24.8.2005, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



Цитата(Corwin @ 24.8.2005, 15:20)
но нету в j2me ни System.getProperties()



как это нету? есть зато "getProperty()"!


java.lang.System

public static long currentTimeMillis() – возвращает текущее время в миллисекундах, отсчитываемое с 1 января 1970 года.
public static java.lang.String getProperty (java.lang.String key) – возвращает системные свойства. Ниже представлены свойства определенные в MIDP 1.0:

...
microedition.locale – содержит название текущей местной среды установленной на устройстве, например "ru-RU".
microedition.encoding – содержит название кодировки по умолчанию используемой платформой, например "ISO8859-1".

смотри здесь: http://lib.juga.ru/article/articleview/103/1/16/


--------------------
PM   Вверх
polosatij
Дата 24.8.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



и кстати, что Iterator-а нет, я просто не поверю smile
возможно я ошибаюсь smile но, не вериться, что-то..

а как Hashtable тогда обрабатывается?

ех.. жаль не могу проверить.. не тот софт на рабочем компьютере..


--------------------
PM   Вверх
Corwin
Дата 25.8.2005, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.8.2005

Репутация: нет
Всего: нет



2polosatij
Гы smile разница между property и properties весьма ощутима smile В первом случае ты должен точно знать наименование этого самого property (а в j2me их маловато, увы), во втором получаешь список. Есть мнение, что у каждого производителя есть недокументированые property, но добраться до них, похоже, нет ни малейшей возможности smile. И придется поверить smile - Hashtable обрабатывается без Iterator-а (кстати как и в j2se), для этого есть Enumeration. А в принципе, классы j2me отличаются от одноименных в j2se, иногда значительно. Посмотри, к примеру, что из себя List представляет, буишь сильно удивлен smile

Это сообщение отредактировал(а) Corwin - 25.8.2005, 09:41
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0827 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.