Форумы xBB

Форумы xBB > Все остальное

RawUrlEncode для J2ME

Автор: dima. Последнее редактирование: 2009-08-08 18:52:25

Встала небольшая задачка написать вебклиент для мобильников. Средствами J2ME. Все было бы хорошо, но мне, как PHP'исту постоянно не хватает для работы привычных средств.
 
Вот вдруг понадобилась функция rawurlencode, которая в PHP кодирует строку соответственно стандарту RFC 1738. Не нашел. Гугл тоже мало чем помог. Пришлось писать самому. Если кому нужно, вот она:
 
Java
    static public String rawUrlEncode(String sUrl) {
        StringBuffer urlOK = new StringBuffer();
        byte[] bUrl = sUrl.getBytes();
        char[] hex = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                      'A', 'B', 'C', 'D', 'E', 'F'};
        for (int i = 0; i < bUrl.length; i++) {
            byte bt = bUrl[i];
            if (bt >= 'a' && bt <= 'z' || bt >= 'A' && bt <= 'Z') {
                urlOK.append((char)bt);
                continue;
            }
            if (bt >= '0' && bt <= '9' || bt == '-' || bt == '.' || bt == '_') {
                urlOK.append((char)bt);
                continue;
            }
            int h2;
            int h1;
            if (bt >= 0) {
                h2 = bt % 16;
                h1 = (bt - h2) / 16;
            } else {
                h2 = (256 + bt) % 16;
                h1 = (256 + bt - h2) / 16;
            }
            urlOK.append("%" + hex[h1] + hex[h2]);
        }
        return urlOK.toString();
    }

Возможно я поступил неправильно и гуру J2ME знают, как жить без rawurlencode. Возможно я саму функцию реализовал неправильно или не эффективно. Готов к обсуждению.

3 комментария

11.08.2009 20:38:36 #
Mozilla Firefox Гость antenne
а чем java.net.URLEncoder не устроил?
12.08.2009 01:55:57 #
Iceweasel dima
Это же J2ME. CLDC+MIDP. На этой платформе "package java.net does not exist" Not so
14.08.2009 05:53:48 #
Iceweasel dima
Важное дополнение
 
Не знаю почему, но в Nokia описанная функция корректно работает только если при вызове getBytes() явно указывать кодировку строки. В моем случае это была "UTF-8". При ее указании все заработало как часы.

Ответить:

Представиться как     Антибот:
   

Просьба не постить мусор. Пользуйтесь кнопкой предварительного просмотра на панели инструментов редактора.

Введите логин: и пароль: (

© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.