Символ, закодированный в URL-адресе, неправильно анализируется webflow / EL / JSF

, когда я отправляю символ Ö с веб-страницы, серверная часть получает Ã. Веб-страница является частью приложения Spring Webflow / JSF1.2 / Facelets. Когда я проверяю POST с помощью firebug, я вижу:

Content-Type: application/x-www-form-urlencoded 
Content-Length: 74 
rapport=krediet_aanvragen&fw1=0&fw2=%C3%96ZTEKIN&fw3=0&fw4=0&zoeken=Zoeken

Символ Ö закодирован как% C3% 96, используя эту таблицу, я вижу, что это правильное шестнадцатеричное представление UTF-8 / Unicode персонаж Ö. Content-Type: ...

когда я отправляю символ Ö с веб-страницы, серверная часть получает Ã. Веб-страница является частью приложения Spring Webflow / JSF1.2 / Facelets. Когда я проверяю POST с помощью firebug, я вижу:

Content-Type: application/x-www-form-urlencoded 
Content-Length: 74 
rapport=krediet_aanvragen&fw1=0&fw2=%C3%96ZTEKIN&fw3=0&fw4=0&zoeken=Zoeken

Символ Ö закодирован как% C3% 96, используя эту таблицу, я вижу, что это правильное шестнадцатеричное представление UTF-8 / Unicode персонаж Ö. Content-Type: ...

когда я отправляю символ Ö с веб-страницы, серверная часть получает Ã. Веб-страница является частью приложения Spring Webflow / JSF1.2 / Facelets. Когда я проверяю POST с помощью firebug, я вижу:

Content-Type: application/x-www-form-urlencoded 
Content-Length: 74 
rapport=krediet_aanvragen&fw1=0&fw2=%C3%96ZTEKIN&fw3=0&fw4=0&zoeken=Zoeken

Символ Ö закодирован как% C3% 96, используя эту таблицу, я вижу, что это правильное шестнадцатеричное представление UTF-8 / Unicode персонаж Ö. Однако когда он достигает бэкэнда, символ меняется на Ã. Используя ту же таблицу, я вижу, что где-то есть код, который пытается интерпретировать C3 и 96 отдельно (или как нотацию unicode \ u). U + 00C3 оказывается Ã, 96 - невидимый символ, что объясняет это.

Теперь я знаю, что это типичный случай несоответствия кодировки, я просто не знаю, где это исправить.

Веб-страница содержит


При отладке я вижу, что библиотека, ответственная за неправильную интерполяцию, - это jboss-el 2.0.0.GA, что кажется правильным, поскольку значение передается на сервер в выражении веб-потока:


Он помещен в flowScope следующим образом:


Не обращайте внимания на запутанный способ получения ввода формы в бэкэнд, это код, который пытается интегрировать Webflow с отчетами BIRT ... но у меня такой же симптом есть в других веб-приложениях. иначе, если (этот экземпляр B) doB (); else if (this ...

У меня вопрос об использовании case case для объекта instanceof :

Например: моя проблема может быть воспроизведена на Java:

if(this instanceof A)
    doA();
else if(this instanceof B)
    doB();
else if(this instanceof C)
    doC():

Как бы это было реализовано с использованием переключателя ... case ?

249
задан Murat Karagöz 27 March 2019 в 05:23
поделиться