`
iceman1952
  • 浏览: 8100 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

试尽了各种编码,但字符串始终乱码,怀疑此处JDK中本身就乱码了,大家一起来讨论下,还不信就解决不了了

阅读更多
请管理员不要把这个帖子转到提问区,我主要是想让大家讨论下,谢谢

列出我的笔记本上可用的网络接口,但是,无论如何就是乱码,
我的笔记本是 联想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上挂了好几天,也没人能解决这个问题,所以,发到这里和大家一起讨论下,我还就不信了这个问题不能解决了
分享到:
评论
11 楼 whaosoft 2009-09-10  
是不是配置的事,没遇到过
10 楼 hanjiangit 2009-09-10  
我也出现这个问题了 jdk1.5 机器配置台式机 请高手关注
9 楼 dangjun625 2009-09-10  
基本上都用jdk1.5 也有很多人用jdk1.6了 jdk1.4不稳定
8 楼 ThinkingInAll 2009-09-10  
我也碰到过
比如文件是utf-8的,在windows下使用某个stream并且没有地方设置编码的话,可能就会出现这个问题
7 楼 joknm 2009-09-10  
检查一下你目前编辑环境使用的编码。
6 楼 ray_linn 2009-09-10  
检查一下你的控制台(dos窗口,属性)codepage
5 楼 iceman1952 2009-09-10  
xieboxin 写道
會不會是系統的問題?在我這裡也沒有亂碼……

应该不是系统的问题,其他人也有碰到此问题的。

在CSDN上也讨论过这个问题,链接:
http://topic.csdn.net/u/20090907/15/6cfd3b1b-2d15-4633-b426-0a1fcfd02dc6.html?08481355708463789
4 楼 iceman1952 2009-09-10  
yanwt 写道
你运行环境是什么?用的什么编译器?


OS:Windows Xp pro   sp3

JDK: 1.4.2_10
3 楼 xieboxin 2009-09-10  
會不會是系統的問題?在我這裡也沒有亂碼……
2 楼 mislay 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里面不支持。
1 楼 night_stalker 2009-09-09  
我的机器上没乱码(不过不是联想……而且没非 ascii 字符)

或许是你的控制台编码有问题。试着打印到文件看看。

(程序不用改,
java InterfaceLister > res.txt
然后 tellenc res.txt)

相关推荐

    JavaFocus::hammer: Java重点内容 博客文章 样例

    JavaFocus:hammer: Java学习重点 ...success和isSuccessequals 和 ==String为什么是不可变的字符串常量池为什么直接定义的字符串可以调用String对象的各种方法JDK6 和 JDK7 substring原理的改变字符串拼接的几种方式

    day019-io笔记和代码.rar

    * 根据指定字符集将字节数组中从指定下标开始到指定长度结束的数据转换为字符串 * charsetName:字符集名 例如 : "GBK"、"UTF-8" 、"ISO-8859-1" * * 不常用 * 3.String(byte[] ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例081 去掉字符串中的所有空格 101 实例082 汉字与区位码的转换 102 第5章 面向对象技术应用 103 5.1 Java中类的定义 104 实例083 自定义图书类 104 实例084 温度单位转换工具 105 实例085 域的默认初始化值 106 ...

    JAVA工具类

    Md5Utils - 获取字符串或文件的md5 excel ReadExcel2003 - 以model方式读2003版Excel(大数据) ReadExcel2007 - 以sax方式读2007版Excel(大数据) WriteExcel - 写Excel image CaptchaUtils - 生成验证码 ...

    JAVA 范例大全 光盘 资源

    实例40 替换字符串中的部分字符 92 实例41 Java字符串之密码加密 93 实例42 正则表达式验证字符串 95 第7章 Java常用类 98 实例43 数字的舍入 98 实例44 转换数字的进制 101 实例45 随机数 103 实例46 Java ...

    Java面试宝典2020修订版V1.0.1.doc

    35、MySQL、SqlServer、oracle写出字符存储、字符串转时间 52 36、update语句可以修改结果集中的数据吗? 53 37、oracle如何设置主键自动增长? 53 38、表连接、子查询的区别是什么?它们可以相互转化吗?你倾向于用...

    Android应用开发揭秘pdf高清版

    5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像旋转 5.2.7 图像缩放 5.2.8 图像像素操作 5.2.9 Shader类介绍 5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween动画 5.3.2 Frame动画 ...

    《Android应用开发揭秘》附带光盘代码.

     5.2.4 字符串绘制  5.2.5 图像绘制  5.2.6 图像旋转  5.2.7 图像缩放  5.2.8 图像像素操作  5.2.9 Shader类介绍  5.2.10 双缓冲技术  5.2.11 全屏显示  5.2.12 获得屏幕属性  5.3 动画实现  5.3.1 Tween...

    《Android应用开发揭秘》源码

     5.2.4 字符串绘制  5.2.5 图像绘制  5.2.6 图像旋转  5.2.7 图像缩放  5.2.8 图像像素操作  5.2.9 Shader类介绍  5.2.10 双缓冲技术  5.2.11 全屏显示  5.2.12 获得屏幕属性  5.3 动画实现  5.3.1 Tween...

    android开发揭秘PDF

    5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像旋转 5.2.7 图像缩放 5.2.8 图像像素操作 5.2.9 Shader类介绍 5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween动画 5.3.2 Frame动画 ...

    【尚硅谷】徐靖博 最新电商项目实战(完结)

    }2 b9 E( w8 I 59.04 商品分类检索列表 60.05 商品属性检索介绍 61.06 ajax字符串数组传参 62.07 ajax字符串json传参& i' g9 \7 ^! e7 _ 63.08 表单序列化传参 64.09 动态sql的设计方法" o# D. ?# R% _1 X 65.10 ...

Global site tag (gtag.js) - Google Analytics