繁体   English   中英

诊断Integer.parseInt()错误

[英]Diagnosing Integer.parseInt() Error

我正在从平面文件中读取管道分隔的文本,并且在解析文本时遇到错误。 我是Java的老手,但是几年没碰过它。 这是代码:

        String zipString = tokenizerForOneLine.nextToken();
        System.out.println( "Zip String: -->" + zipString + "<--");
        //zipString = "18103"; <<<This works!!!
        int zipInt = Integer.parseInt( zipString );
        aProvider.setZipCode( zipInteger );

这是输出:

Zip String: -->�1�8�1�0�3�<--
java.lang.NumberFormatException: For input string: "�1�8�1�0�3�"
NumberFormatException while reading file.
Detailed Message: For input string: "�1�8�1�0�3�"

我天真的猜测是这是一个编码问题。 这可能吗? 对我来说完全是无稽之谈。 还是我正在做一些非常愚蠢的事情,只是看不到?

如何诊断编码问题? (我的数据供应商声称它在标准UNICODE中)。

提前致谢,

圭多

确保使用正确的编码构建阅读器。 您的代码应如下所示:

    BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("data.csv"), encoding));
    String line;
    while ((line = in.readLine()) != null) {
        StringTokenizer tokenizer = new StringTokenizer(line, "|");

        ...
    }

编码可能是UTF-16。

另外,如果文件具有字节顺序标记,则可以使用Commons IO中的BOMInputStream自动检测编码。

http://commons.apache.org/io/api-release/org/apache/commons/io/input/BOMInputStream.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM