我想通过使用以下类获取IP地址,并意外地发现以下代码中的ipAddress
有时包含不可打印的字符,例如DC2
,CAN
。 ..我想看看你是否知道这个结果的原因以及如何防止这种情况?拥有这个可打印的字符使得字符串变得不可预测并且难以进行后处理。有谁可以请一些经验给我?
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
InetAddress inetAddress = enumIpAddr.nextElement();
String ipAddress = inetAddress.getHostAddress();
//this ipAddress contains some up-printable char..
}
}
ipAddress
字符串存储在arrayList中,然后发送到我的服务器(在JsonArray中)。在服务器端,没有什么神奇的东西,我只从ArrayList读取字符串,然后那些特殊字符出现在那里。
s = JsonArray.getString(i);
我能想到的只是......也许客户发来的包裹被污染了。你说什么?
我知道处理这个问题的一个简单方法是删除字符串后面附加的字符DC2
和CAN
,但是,我想知道导致这种情况和所有可能性的原因。谢谢。