Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
输入字符串的java.lang.NumberFormatException“;1“;_Java_Parsing_Encoding - Fatal编程技术网

输入字符串的java.lang.NumberFormatException“;1“;

输入字符串的java.lang.NumberFormatException“;1“;,java,parsing,encoding,Java,Parsing,Encoding,所以,我有一个困扰我的问题。我用java制作了一个简单的解析器。以下是相关代码: while( (line = br.readLine())!=null) { String splitted[] = line.split(SPLITTER); int docNum = Integer.parseInt(splitted[0].trim()); //do something } 输入文件是CSV文件,文件的第一个条目是整数。当我开始解析时,我立即得到以下异常: Excep

所以,我有一个困扰我的问题。我用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端点。该程序在Ubuntu 14.04上运行。欢迎向您提供查找问题的任何建议。

您在该号码前面有一个;如果我复制您问题中类似于
“1”
的内容并将其粘贴到
vim
,我会看到您前面有一个FE FF(例如,a)。从该链接:

构成BOM的确切字节将是Unicode字符U+FEFF通过该转换格式转换成的任何字符


这就是问题所在,使用适当的读取器读取文件以进行转换(UTF-8、UTF-16 big-endian、UTF-16 little-endian等)。文件是用这些读取器编码的。有关在Java中读取Unicode文件的更多信息,请参见。

Nice one使用“复制并粘贴”来解决问题@多瓦尔:谢谢,我说这是UTF-8 BOM是完全错误的,你说得很对,在电线上,UTF-8的BOM是EF BB BF。但是我们看到的是读取文件的最终结果,然后在错误消息中看到输出。该文件可能处于任何转换中;所有的BOM表一经阅读都会失效。但如果它是未经加工的,那么……哦,我不知道。:-)很可能是UTF-16.:-)这完全取决于文件是如何读入流中的。“所有BOM表一次读取后都是FE FF”-不完全一样。一旦解码,所有BOM表最终都是U+FEFF(这与0xFE 0xFF不同,因为它是一个代码点,而不是一个字节序列)。在解码之前,你所拥有的只是字节,可以是任何可以表示Unicode字符的编码(主要是UTF-8和UTF-16,但也有其他存在)。@Kevin:是的,这就是我的意思。