Я пишу тестовое приложение. Он состоит из небольшого настольного приложения и сервлета. Рабочий стол является клиентом и должен подключаться к моему сервлету, как я полагаю, из любой ОС. Это здорово, но у меня есть текстовый файл, который находится на сервере. Мое настольное приложение добавляет строки в текстовый файл (имена файлов изображений). Строки могут содержать кириллические слова, такие как «картинка1.jpg», и это самая большая проблема, потому что я не могу вернуть исходное имя кириллического изображения обратно моему клиенту. Это делает невозможным загрузку изображения с использованием его имени, поскольку сервер не может идентифицировать такое имя изображения, например, «??????? 1.jpg», чтобы прочитать его обратно моему клиенту. Я знаю, что это проблема кодирования, но мне интересно, как заставить мое клиентское настольное приложение работать правильно с моим сервлетом, который находится в Linux? Я имею в виду, что мне делать, если мой клиент и сервер имеют разную локализацию и «file.encoding»?
ОК ... принимая ваше молчание. Я хочу расшифровать некоторые детали ... Итак, что я делаю, и что я получаю
- A) (клиент) Я использую JFileChooser, чтобы получить
имя файла изображения (назовем его nameX)
- B) (клиент) Я использую httpclient 4 и
StringBody (nameX, "utf8") для отправки
nameX моему сервлету
- C) (сервер) Получает nameX из FileItems
и записывает (добавляет) его в файл N.txt
- D) (клиент) Я получаю файл изображений
отображается список имен (в кодировке cp1251
потому что клиент поддерживает это) и
выберите "nameX"
- E) (клиент) Посылает "nameX" с
Заголовок StringBody (nameX, "utf8") для
сервлет
- F) (сервер) Получает nameX, но для некоторых
причина это что-то вроде
?????? 1.jpg, поэтому он не может определить
имя файла ...
ТАК, моя проблема в том, что где-то вернулась / предыдущая кодировка, я думаю, но я не уверен ...
Я проверил кодировку своего сервера
- os.name = Linux
- sun.jnu.encoding = UTF-8
- file.encoding = UTF-8
- user.language = ru
и мой клиент:
- os.name = Windows XP
- sun.jnu.encoding = Cp1251
- file.encoding = Cp1251
- user.language = ru
Пожалуйста, помогите мне понять, что я делаю не так?
Любой полезный комментарий приветствуется :)