2015-03-28 2 views
0

У меня есть несколько машин Windows 7 в локальной сети, каждая с именем хоста. В одном из них работает приложение Java 8, которое должно обращаться к другому компьютеру через HTTP, поэтому ему необходимо сформировать URI, содержащий имя хоста сервера. У машины, на которой запущен HTTP-сервер, есть имя хоста, содержащее японские символы, которые не разрешены в URI.Как сформировать URI для доступа к сетевой машине с именем хоста, содержащим расширенные символы

Как создать URI для доступа к серверной машине в локальной сети? RFC 4501, «Идентификаторы унифицированных идентификаторов систем доменных имен», говорит, что кодирование в соответствии с RFC 3986 «Унифицированный идентификатор ресурса (URI): общий синтаксис», который я бы назвал означать процентное кодирование октетов UTF-8. Но RFC 3490, «Интернационализация доменных имен в приложениях (IDNA)», говорит, чтобы преобразовать в Punycode.

Итак, что это такое, процентное кодирование или Punycode? Какая кодировка позволит Java-приложению успешно искать и подключаться к другой машине Windows 7, содержащей расширенные символы в имени хоста, в локальной сети?

ответ

1

DNS поддерживает только ASCII в имена хостов, так что имена хостов, содержащие международные символы должны быть зарегистрированы в DNS, и закодирован в URL, с использованием формата Internationalized Domain Name (IDN), которая использует как Nameprep и Punycode при кодировании не-ASCII символов.

Также обратите внимание на RFC 3987 Internationalized Resource Identifiers (IRIs), что позволяет международным символам (в значительной степени) не кодироваться и определяет алгоритмы преобразования между ИРИ и URI.

+0

Спасибо за ответ, Remy Lebeau, но вы не дали ответа --- вы просто предоставили ссылку и сказали мне, что имена хостов должны быть закодированы, не сообщая мне, что они должны быть закодированы. –

+0

Я рассказал вам, как они закодированы в URL-адресе - с использованием формата IDN, чтобы соответствовать их регистрации DNS. –

0

Правильный ответ: «Использовать Punycode для кодирования имени хоста при формировании URI». Это объясняется в статье W3C An Introduction to Multilingual Web Addresses и указывается в RFC 3987 «Интернационализированные идентификаторы ресурсов (IRI)».

+0

См. Также http://meta.stackexchange.com/q/234680. –

+0

См. Также http://stackoverflow.com/a/9985170/421049. –

+0

Java имеет класс IDN для работы с Punycode. См. Http://stackoverflow.com/a/3803676/421049. –

 Смежные вопросы

  • Нет связанных вопросов^_^