该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-09
最后修改:2009-09-10
列出我的笔记本上可用的网络接口,但是,无论如何就是乱码, 我的笔记本是 联想Y430;OS: windows xp pro sp3;JDK: 1.4.2_10 代码非常简单,如下: package examples.a06; import java.net.NetworkInterface; import java.util.Enumeration; public class InterfaceLister { public static void main(String[] args) throws Exception { Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) interfaces.nextElement(); System.out.println(ni); } } } 输出是: name:lo (MS TCP Loopback interface) index: 1 addresses: /127.0.0.1; name:eth0 (W-ibeda virtual adapter - ????ü??????ò?????) index: 2 addresses: name:eth1 (Broadcom NetLink (TM) Fast Ethernet - ????ü??????ò?????) index: 65540 addresses: /192.168.0.100; name:eth2 (Intel(R) Wireless WiFi Link 5100 - ????ü??????ò?????) index: 458757 addresses: name:ppp0 (WAN (PPP/SLIP) Interface) index: 786438 addresses: /117.88.171.252; 我甚至把程序改成如下,但还是不能得到正确的结果: package examples.a06; import java.net.NetworkInterface; import java.util.Enumeration; public class InterfaceLister { public static final String[] ENCODEING = { "iso-8859-1", "gb2312", "gbk", "big5", "gb18030", "utf-8", "utf-16"}; public static void main(String[] args) throws Exception { Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) interfaces.nextElement(); String strDisplay = ni.toString(); for (int i = 0; i < ENCODEING.length; i++) { byte[] bArray = strDisplay.getBytes(ENCODEING[i]); for (int k = 0; k < ENCODEING.length; k++) { String newStr = new String(bArray, ENCODEING[k]); System.out.println(ENCODEING[i] + "-->" + ENCODEING[k]); System.out.println(newStr); System.out .println("***************************************"); } } } } } 我怀疑这个JDK的一个bug,也就是说,NetworkInterface 中的 displayName 在JDK内部就是乱码的,否则不会出现这种情况的 另外:在CSDN上挂了好几天,也没人能解决这个问题,所以,发到这里和大家一起讨论下,我还就不信了这个问题不能解决了 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-09
最后修改:2009-09-09
我的机器上没乱码(不过不是联想……而且没非 ascii 字符)
或许是你的控制台编码有问题。试着打印到文件看看。 (程序不用改, java InterfaceLister > res.txt 然后 tellenc res.txt) |
|
返回顶楼 | |
发表时间:2009-09-10
name:net0 (WAN Miniport (SSTP)) index: 2 addresses:
name:net1 (WAN Miniport (IKEv2)) index: 3 addresses: name:net2 (WAN Miniport (L2TP)) index: 4 addresses: name:net3 (WAN Miniport (PPTP)) index: 5 addresses: name:ppp0 (WAN Miniport (PPPOE)) index: 6 addresses: name:eth0 (WAN Miniport (IPv6)) index: 7 addresses: name:eth1 (WAN Miniport (Network Monitor)) index: 8 addresses: name:eth2 (WAN Miniport (IP)) index: 9 addresses: name:ppp1 (RAS Async Adapter) index: 10 addresses: 你看,好似你乱码都是括号里面的那部分协议 我怀疑是你装JDK时的系统编码和现在系统的编码不一致了. 我以前也出现过类似的问题,java里面输出中文但是在console里面不支持。 |
|
返回顶楼 | |
发表时间:2009-09-10
會不會是系統的問題?在我這裡也沒有亂碼……
|
|
返回顶楼 | |
发表时间:2009-09-10
yanwt 写道 你运行环境是什么?用的什么编译器?
OS:Windows Xp pro sp3 JDK: 1.4.2_10 |
|
返回顶楼 | |
发表时间:2009-09-10
xieboxin 写道 會不會是系統的問題?在我這裡也沒有亂碼……
应该不是系统的问题,其他人也有碰到此问题的。 在CSDN上也讨论过这个问题,链接: http://topic.csdn.net/u/20090907/15/6cfd3b1b-2d15-4633-b426-0a1fcfd02dc6.html?08481355708463789 |
|
返回顶楼 | |
发表时间:2009-09-10
最后修改:2009-09-10
检查一下你的控制台(dos窗口,属性)codepage
|
|
返回顶楼 | |
发表时间:2009-09-10
检查一下你目前编辑环境使用的编码。
|
|
返回顶楼 | |
发表时间:2009-09-10
我也碰到过
比如文件是utf-8的,在windows下使用某个stream并且没有地方设置编码的话,可能就会出现这个问题 |
|
返回顶楼 | |
发表时间:2009-09-10
基本上都用jdk1.5 也有很多人用jdk1.6了 jdk1.4不稳定
|
|
返回顶楼 | |