Java语言输入字符串的lang.NumberFormatException��1.��[英] java.lang.NumberFormatException for input string "1"

问题描述

所以,我有一个确实困扰着我的问题.我有一个简单的解析器,我在Java中制作了一个简单的解析器.这是相关代码:

while( (line = br.readLine())!=null)
{
    String splitted[] = line.split(SPLITTER);
    int docNum = Integer.parseInt(splitted[0].trim());
    //do something
}

输入文件是CSV文件,该文件的第一个条目是整数.当我开始解析时,我直接得到此例外:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at dipl.parser.TableParser.parse(TableParser.java:50)
at dipl.parser.DocumentParser.main(DocumentParser.java:87)

我检查了该文件,它确实有1个作为其第一个值(该字段中没有其他字符),但我仍然收到消息.我认为这可能是因为文件编码:它是UTF-8,带有UNIX ENDLINE.该程序在Ubuntu 14.04上运行.欢迎寻找问题的任何建议.

推荐答案

您有一个 bom 在该数字前面如果我在问题中复制"1"的外观并将其粘贴到vim中,我会发现您有一个fe ff(例如,a bom )从该链接:

包含BOM的精确字节将是Unicode字符u+feff通过该转换格式转换为的任何内容.

因此,这就是问题,将文件与适当的读取器一起使用,以进行转换(UTF-8,UTF-16大端,UTF-16 Little-endian等).另请参见这个问题及其答案有关读取Java中的Unicode文件的更多信息.

本文地址:https://www.itbaoku.cn/post/978694.html