在將 IP 地址字符串解析為長整型時,拋出 java.lang.NumberFormatException: For input string: "0" 異常。本文記錄問題排查過程及解決方案。
錯誤信息顯示輸入字符串包含不可見字符 (Unicode BOM 字符 \uFEFF),導致解析失敗。
// 使用 InputStreamReader 指定 UTF-8 讀取,自動處理 BOM
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) {
String line = reader.readLine();
// 手動檢查並移除 BOM
if (line != null && line.startsWith("\uFEFF")) {
line = line.substring(1);
}
}
在 IDE(如 IntelliJ IDEA、VS Code)中設置文件編碼為 UTF-8 (without BOM) 保存。
public static long ip2Long(String ip) {
if (ip == null) throw new IllegalArgumentException("IP 不能為空");
// 移除可能的 BOM 和空白字符
ip = ip.trim().replace("\uFEFF", "");
// 後續解析邏輯...
}
StandardCharsets.UTF_8 顯式指定編碼讀取