Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > кодировка (кракозяблики вместо русского)


Автор: nerezus 31.1.2007, 18:38
Код

InputStreamReader reader;
        try {
            reader = new InputStreamReader(this.getClass().getResourceAsStream("/" + filename), "Windows-1251");
        } catch (UnsupportedEncodingException e) {
            System.out.println(">>>>>>>>>Wrong encoding...");
            reader = new InputStreamReader(this.getClass().getResourceAsStream("/" + filename));
        }


кракозяблики вместо русского при выводе =\
При этом на эмул нормально.

WTF?

Добавлено @ 18:39 
файл в 1251

Автор: javastic 1.2.2007, 10:54
Попробуй вместо windows-1251, использовать utf-8 так будет надёжней.
Попробуй вначале так прочитать, если не получится то сохраняй в utf-8, а потом читай.
Многие телефоны не понимают типа windows-1251, некоторые их воспринимают как cp1251.
По умолчанию в телефоне используется ISO1859-1

Зайди по этой ссылке http://www.vidarholen.net/contents/virca/
там есть исходники IRC клиента в котором используется windows-1251, koi-8

Автор: Vladimir35 1.2.2007, 11:04
Цитата(nerezus @ 31.1.2007,  18:38)
кракозяблики вместо русского при выводе =\ При этом на эмул нормально.

WTF?

Обычное дело на j2me.

Попробуйте "windows-1251",  "WINDOWS-1251".... Покрайней мере я встречал и "UTF8", и "utf8", и "UTF-8", и "utf-8", и "Utf-8". smile 

Хотя если исключения нет, то скорее всего ничего не поделаешь. Хотя бы тело укажите.

Автор: nerezus 1.2.2007, 11:50
Эх... жалко, что все так криво =\

Сменил на UTF-8 и перекодировал файл Штырлицем...
Работает на эмуле и на мотороле(раньше не работало).
На сименсе и нокии позже проверю )

Автор: javastic 1.2.2007, 15:11
nerezus, я тебе говорю, посмотри в исходниках по ссылке, там есть метод который умеет читать в windows-1251

Автор: Arahnus 23.8.2009, 19:29
Посмотрел метод для чтения из Cp1251 из мидлета. Да работает но только в эмуляторе. На реальном телефоне же абракадабра выходит.

Тут советуют utf-8 однако это не всегда подходит для реальных приложений. Что если текст нужно загружать не весь а частями, с какого байта начинать чтение если латинские символы занимают 1 байт, а русские два?
Вы скажете используй InputStreamReader и читай посимвольно. Но InputStreamReader работает не во всех телефонах поэтому приходится использовать InputStream и читать побайтово а не посимвольно. Вот поэтому я считаю что нужно искать рабочий способ для работы с Cp1251

Кто нибудь пробовал принимать текст из Cp1251 вот так:
Код

// в с считываем следующий байт
s.append( (char) ((c>=0xc0 && c<=0xFF) ? (c + 0x350) : c));


У меня на эмуле работает, но на телефоне не могу пока проверить - глючит.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)