Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > из Unicode в Cp1251


Автор: ylims 29.5.2009, 05:19
В JavaScript функции делаю так 

Код

...
http_request.open("POST","Action.do"',true);
...
http_request.send("field="+field);
...

field - строка символов 

В Action.do получаю строку
Код

String field = request.getParameter("field");

  но вместо русских букавок пишутся вопросики...

пробовал вот
Код

String field = request.getParameter("field");
byte[] tmp = field.getBytes("Unicode");
String field1= new String(tmp,"Cp1251");

т.е  как я понял, в JavaScript кодировка Unicode, тогда получаю массив байтов (byte[] tmp = field.getBytes("Unicode");
) и делаю из них строку (String field1= new String(tmp,"Cp1251");
)  но уже в нужной кодировке...
но чот тож не айс

Как бы так сделать чтобы работало?

забыл сказать, на странице задана кодировка windows-1251


Автор: tux 29.5.2009, 05:47
Код

http_request.open("POST","Action.do"',true);
...
http_request.send("field="+encodeURIComponent(field));

поможет?

Цитата(ylims @  29.5.2009,  05:19 Найти цитируемый пост)
как я понял, в JavaScript кодировка Unicode

В Java, как это ни удивительно, тоже.

Автор: ylims 29.5.2009, 07:28
Цитата(tux @ 29.5.2009,  05:47)
Код

http_request.open("POST","Action.do"',true);
...
http_request.send("field="+encodeURIComponent(field));

поможет?

Цитата(ylims @  29.5.2009,  05:19 Найти цитируемый пост)
как я понял, в JavaScript кодировка Unicode

В Java, как это ни удивительно, тоже.

не, чот не помогло.



Автор: Samotnik 30.5.2009, 10:45
ylims, обрати внимание на функцию escape в JavaScript а также encodeURI() и encodeURIComponent()
чтобы тебе не искать, http://xhtml.ru/2006/05/25/encodestring/

Автор: ylims 1.6.2009, 03:50
ребят, ещё вопрос.

encodeURIComponent()  рабочая функция ).

однако как мне в Action классе выполнить decodeURIComponent, ну иль по другому получить декодированную строку? (Я из скрипта получаю параметр в Action)


Автор: tux 1.6.2009, 06:58
Кодировка запроса выставляется? Если да, то все должно работать.

Автор: ylims 1.6.2009, 11:22

млин, ну никак не хочет работать.... smile  smile 

Need HELP

Автор: Samotnik 1.6.2009, 11:45
http://myfaces.apache.org/sandbox/apidocs/org/apache/myfaces/custom/util/URIComponentUtils.html
может это поможет ?

Автор: ylims 2.6.2009, 07:10
Цитата(Samotnik @ 1.6.2009,  11:45)
http://myfaces.apache.org/sandbox/apidocs/org/apache/myfaces/custom/util/URIComponentUtils.html
может это поможет ?

эхх... тож не работает.
 
 Всё, убрираю этот .... JavaScript нафиг.

Автор: Klio 5.6.2009, 15:57
Есть такой вариант, но программный в виде функции класса

Код

public String cSt(String strCP1251) {
        String obj_name = strCP1251;
        int stringLength = strCP1251.length();
        char b[] = new char[stringLength];
        obj_name.getChars(0, stringLength, b, 0);// getBytes("Cp1251");
        obj_name = "";
        int c;
        for (int j = 0; j < b.length; j++) {
            c = b[j];
            if (c < 0) {
                c += 256;
            }
            if (c > 191 && c < 256) {
                c += 848;
            } else if (c == 168) {
                c += 857;
            } else if (c == 184) {
                c += 921;
            }
            obj_name += (char) c;
        }
        return obj_name;
    }


strCP1251 - это UNICODE строка,
на выходе возвращается строка в cp1251

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