【发布时间】:2012-08-18 00:52:11
【问题描述】:
我在与主机名中有一些重音符号 (é è ô...) 的服务器建立连接时遇到问题。
例如:
String oUrl = "www.hôtel.fr";
System.out.println(oUrl);
InetSocketAddress isa = new InetSocketAddress(oUrl.toString(), 80);
System.out.println(isa.isUnresolved());
ISA 永远无法解决。它适用于 www.google.fr。
我尝试对主机进行 URLEncode(使用 UTF-8 字符集的 URLEncoder,因此主机名是 www.h%C3%B4tel.fr),但没有结果。
有人有线索吗?我在网上找不到任何东西。
感谢和抱歉我的英语。
【问题讨论】:
-
我尝试运行您的示例,但返回错误,即主机名 可以 解析为
InetAddress。添加附加行:System.out.println(isa.getAddress());打印:www.hôtel.fr/81.200.64.50。 -
Damien,仅供参考,我将您的源代码复制到我必须处理的测试项目中,并在 InetSocketAddress 的构造函数中发现语法错误(它之前引用了一个不存在的变量)。我编辑了你的帖子,不想让你对编辑感到惊讶。
-
坦克菲利普。我的原始源代码有点复杂。
-
@DuncanJones :这真的很奇怪。我尝试了 JDK 6 和 7 并获得了真正的回报。可能是系统管理不一样吧?
标签: java sockets diacritics host hostname