各位大大,小弟初學 JAVA 遇到亂碼問題有請各位賜教
小弟用 NetworkInterface.getDisplayName()讀取電腦所有網絡卡的MAC address 發現當有中文出現就會亂碼 (例如藍芽網絡設備)
程式碼如下
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
while(interfaces.hasMoreElements())
{
NetworkInterface device = (NetworkInterface) interfaces.nextElement();
if (device.getHardwareAddress() != null && !( device.isPointToPoint() || device.isLoopback() ) )
{
byte[] mac = device.getHardwareAddress();
macaddress = new String();
for (int i = 0; i < mac.length; i++)
{
macaddress += String.format("%02X%s", mac[i], (i < mac.length - 1) ? ":" : "");
}
System.out.println("[" + device.getDisplayName() + "]" + macaddress);
System.out.println("[" + new String(device.getDisplayName().getBytes("UTF-8")) + "]" + macaddress);
System.out.println("[" + new String(device.getDisplayName().getBytes("Big5")) + "]" + macaddress);
}
}
Output:
[Marvell Yukon 88E8057 PCI-E Gigabit Ethernet Controller #2 - Packet Scheduler Miniport]:30:F0:A3:0F:06:00
[ÂŪ˸m ( ӤH°ϰìºô¸ô]:00:01:64:00:00:00
[ÂŪ˸m ( ӤH°ϰìºô¸ô]:00:01:64:00:00:00
[????m (??H�X??????]:00:01:64:00:00:00
正確 Output 應該是:
[Marvell Yukon 88E8057 PCI-E Gigabit Ethernet Controller #2 - Packet Scheduler Miniport]:30:F0:A3:0F:06:00
[藍芽裝置 (個人區域網路) #2]:00:01:64:00:00:00
[藍芽裝置 (個人區域網路) #2]:00:01:64:00:00:00
[????m (??H�X??????]:00:01:64:00:00:00
由 device.getDisplayName() 讀出的資料應該是 utf8 的但不知為何會出現亂碼,我其實是要把資料放入treenode 內,當然放入後是亂碼,所以試print 出 console試試看而發現了問題所在。
OS 是 Windows XP 中文版,JDK 1.6.20。
請各位大大賜教,謝謝