Проблемы с кодировкой метода getFilename() компонента af:inputFile

Я реализовал загрузку файла в поле БД BLOB, как это было описано в статье Тимо Хана:

http://tompeez.wordpress.com/tag/afinputfile

Фрагмент кода:

// The event give access to an Uploade dFile which contains data about the file and its content

UploadedFile file = (UploadedFile) valueChangeEvent.getNewValue();

// Get the original file name

String fileName = file.getFilename();

Все работает нормально, но у меня проблемы с кодировкой имени файла. Я пытаюсь получить имя файла, используя метод getFilename(), но он отлично работает только с латинской кодировкой, однако не работает для файлов с РУССКОЙ кодировкой в ​​имени файла, например:

Исходное имя файла: my_file.doc -> my_file.doc

Оригинальное имя файла: заявки.png -> 70O2:8.png

Любые идеи, как я могу решить эту проблему?

Заранее спасибо!

UPD от 27.09.2012:

Я нашел интересный баг. Если я добавлю переменную file из приведенного выше кода в часы, я увижу, что свойство _encoding равно "utf8". Если я изменю это свойство на «null», все будет работать нормально!

Любые идеи? Благодарю вас!


person easkerov    schedule 21.09.2012    source источник


Ответы (2)


Проверьте кодировку, которую вы установили для своего компилятора, и в верхней части страницы JSF.

person Shay Shmeltzer    schedule 21.09.2012
comment
Я уже проверил это. Кодировка — UTF-8. P.S. ‹af:inputFile› размещается на фрагменте страницы. - person easkerov; 22.09.2012
comment
Чтобы прояснить это, вы видите имя файла atring в неправильной кодировке, а не данные в БД? - person Timo Hahn; 22.09.2012
comment
Да, абсолютно правильно. Проблема в кодировке строкового имени файла, а не в данных в БД. - person easkerov; 22.09.2012

Попробуйте следующее: откройте свойства проекта, выберите узел компилятора и проверьте выбранную кодировку символов. В вашем случае это должно быть utf-8.

person Timo Hahn    schedule 23.09.2012
comment
Я только что проверил эти настройки, - значение UTF-8. - person easkerov; 23.09.2012
comment
Итак, какова локаль браузера? если любой другой параметр utf-8, он должен работать. Вы очистили кеш браузера? - person Timo Hahn; 23.09.2012
comment
Язык браузера - русский. Кэш браузера очищен. Я только что запустил ваш пример - он отлично работает! Пытаюсь сейчас сравнить настройки в вашем примере с нашим приложением... Очень странно... - person easkerov; 24.09.2012