Различные ОС - Как прочитать текстовый файл сервера с помощью клиентского приложения - PullRequest
1 голос
/ 13 апреля 2011

Я пишу тестовое приложение. Он состоит из небольшого настольного приложения и сервлета. Рабочий стол является клиентом и должен подключаться к моему сервлету, как я полагаю, из любой ОС. Это здорово, но у меня есть текстовый файл, который находится на сервере. Мое настольное приложение добавляет строки в текстовый файл (имена файлов изображений). Строки могут содержать кириллические слова, такие как «картинка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

Пожалуйста, помогите мне понять, что я делаю не так?

Любой полезный комментарий приветствуется :)

1 Ответ

0 голосов
/ 21 июня 2011

Выполните следующие действия:

  1. При записи в файл: новый BufferedWriter (новый OutputStreamWriter (новый FileOutputStream (File), "UTF-8"));

  2. При получении файла изображения с веб-сервера не используйте ничего, кроме ASCII, в URL. К сожалению, только ASCII будет надежно работать на всех веб-клиентах и ​​серверах.

...