2013-03-03 5 views
0

Я пытался открыть небольшой и простой http-сервер для обмена некоторыми файлами по локальной сети (или онлайн по публичному IP). На немного исследований я нашел, что python -m SimpleHTTPServer выполняет эту работу, но у нее есть ужасные проблемы с одновременным запросом. Пользователи сообщают мне, что когда они загружают файл (обычно большой файл, например фильмы), просмотр становится очень медленным.rails webrick Проблема с кодировкой httpserver

Будучи рельсы программист сам, я нашел это:

s=WEBrick::HTTPServer.new({DocumentRoot: ".", Port: 8000 }) 
trap("INT"){s.shutdown} 
s.start 

Это было прекрасно касаемо быть простыми и не имели таких проблем, как Python. Однако есть одна вещь, которая меня озадачила. Когда имена файлов на моем Ubuntu содержат символы, которые arent ascii кодируют, он выдает ошибку: неверная последовательность байтов в US-ASCII.

Мой поиск в драгоценности Webrick показал, что он предполагает кодировку US-ASCII. Интересно, почему не UTF-8. Я попытался вещи, включая: 1. В начале моего рубинового файла:

Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 
  1. в UBUNTU среде:

    экспорт LANGUAGE = en_US.UTF-8 экспорт LANG = en_US.UTF- 8 экспорт LC_ALL = en_US.UTF-8 переходов

  2. Iconv

и Бог знает, что еще за 4 часа я был на нем.

Я действительно не понимаю, как я могу сказать, что webrick использует кодировку символов utf-8 для своего сервера.

С уважением, Хасан

+0

Это мне не ясно, если вы написали собственное приложение новые рельсы, или если вы просто используете WEBrick для обслуживания ваших файлов. Первое, что вам нужно прояснить, - это кодирование имен файлов, которые nativly имеют на диске. Мне кажется, что источником является не UTF-8, а нечто другое. Поэтому вы должны сообщить своему WEBrick, что кодировка исходной строки - X, а затем вы должны закодировать ее на utf-8 для вашей страницы веб-сервера. – Schlangi

ответ

1

Попробуйте добавить «волшебный» комментарий в верхней части файла:

# encoding: utf-8 
+0

уже сделал. Пропущен, когда перечислял вещи, которые я пробовал. Infact это было первое, что я сделал. – saGii