Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Flex > Проблемы с кодировкой в Flex+JSP+DB2


Автор: geckelberryfinn 10.9.2007, 12:51
Проблема в следующем ( не новая, с ней сталкивались, но решений я так и не нашел). Может это на столько очевидно, что никто не утруждает себя заниматься ликбезом, однако, есть большая просьба отбросить ленность и, если можете помочь - напишите. 
Есть некий интерфейс редактирования определенных полей в БД (IBM DB2 - но это, как будет видно дальше, не важно). Все очень просто, в текстовых полях определенные элементы редактируются/создаются и после нажатия на кнопочку "сохранить"данные отправляются jsp страничке (IBM WebSphere), которая записывает их в базу. Все хорошо работает в случае, если буковки в текстовых полях нерусские. В противном случае, как несложно догадаться - непонятная билиберда. mxml  в utf-8, jsp - в utf-8. Если данные считываются из бд, записи которой созданы вручную, то вся русская информация отображается корректно. 
Вот заголовки, которые отправляет сгенерированная swf
Код

Content-Type    text/xml;charset=utf-8
Content-Language    ru-RU
Content-Length    39
Date    Mon, 10 Sep 2007 10:03:34 GMT

Request Headers

User-Agent    Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
Accept    text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language    ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding    gzip,deflate
Accept-Charset    windows-1251,utf-8;q=0.7,*;q=0.7

То, что отправляется выглядит уже плохо
Код

Parameters
action=createfilter
enginecode=    
filtername=фывфы
kppcode=
modelcode=    
warrantycode=

Автор: AntonioBanderaz 13.9.2007, 09:39
Кодируй русские буквы стандартным URLEncode
Примерно так:
Код

var url:String = "http://localhost:8080/test.jsp";
var request:URLRequest = new URLRequest(url);
var variables:URLVariables = new URLVariables();
variables.samplerussianvar = "ТЕСТИРОВАНИЕ";
trace(variables.toString());
request.data = variables;
navigateToURL(request);


Добавлено через 2 минуты и 10 секунд
Кодируй русские буквы стандартным URLEncode
Примерно так:
Код

var url:String = "http://localhost:8080/test.jsp";
var request:URLRequest = new URLRequest(url);
var variables:URLVariables = new URLVariables();
variables.samplerussianvar = "ТЕСТИРОВАНИЕ";
trace(variables.toString());
request.data = variables;
navigateToURL(request);

Автор: mantracoder 2.10.2007, 10:58
А может проблема в кодировке БД?  Какую кодировку использует БД?  Прежде чем обвинять Flex в неправильном декодинге стоит проверить насколько правильно записываются и извлекаются данные из БД. Вписанные вручную - не в счет. Я на данный момент знаю только один существенный баг во Flex при работе с UTF в функции ByteArray.getBytes(). Однако он приводит не к появлению "белиберды", которую Вы описываете, а к исключительной ситуации на уровне Flash Player-а.

Автор: seth 12.12.2007, 13:59
мм та же проблема - с БД все ок 
 в примере AntonioBanderaz так и не догнал где там используется URLEncode  smile 

Автор: seth 12.12.2007, 23:22
Вобщем походу флекс не устанавливать контент-тайп - т.е. его надо вручную ставить 
Код

request.setContentType("utf-8");

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