фильтр загрузки файлов primefaces с фильтром символов utf8


У меня проблема с кодировкой utf-8 в primefaces 3. но с Этим (Добавление фильтра для кодирования символов в web.xml), моя проблема решена. Но у меня есть еще один фильтр для загрузки файлов primefaces в моей сети.XML. На страницах, которые есть fileupload, даже без загрузки чего-либо, мой фильтр кодировки символов не работает и наборы символов utf-8 с неизвестными значениями, как и тогда, когда не было фильтра для загрузки. Как я могу использовать этот фильтр вместе?

2 7

2 ответа:

Это ошибка в примитивах' MultipartRequest. Он использует кодировку символов платформы по умолчанию для полей формы вместо набора в запросе сервлета HTTP, как это сделано HttpServletRequest#setCharacterEncoding() в вашем фильтре кодировки символов (который, как я предполагаю, был отображен в web.xml Перед примерами FileUploadFilter).

В основном, строки 85 и 88 из MultipartRequest в примитивах 3.3

formParams.get(item.getFieldName()).add(item.getString());
// ...
items.add(item.getString());

Необходимо изменить следующим образом

formParams.get(item.getFieldName()).add(item.getString(getCharacterEncoding()));
// ...
items.add(item.getString(getCharacterEncoding()));

Я сообщил об этом как выпуск 4266. В то же время, ваш лучше всего вручную исправить неверную кодировку строки в методе действия backing bean следующим образом, предполагая, что кодировка по умолчанию серверной платформы-ISO-8859-1:

string = new String(string.getBytes("ISO-8859-1"), "UTF-8");

По существу, вам нужна следующая строка кода, чтобы исправить это:

new String(file.getFileName().getBytes(Charset.defaultCharset()), "UTF-8")