当前位置: 首页 > 面试题库 >

java.nio.charset.MalformedInputException:输入长度= 1

左丘宜年
2023-03-14
问题内容

我有这个功能(将代码示例的HTML标记剥离)从CSV构建HTML表,但是每次尝试运行它时都会遇到运行时错误,但我不知道为什么。谷歌说,也许编码有些错误,但是我不知道如何更改。

我的CSV以ANSI编码,并包含ä,Ä,Ü,Ö等字符,但我无法控制编码,或者将来是否会更改。

错误发生在这里:

Caused by: java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
at java.io.BufferedReader$1.hasNext(Unknown Source)
at java.util.Iterator.forEachRemaining(Unknown Source)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
at testgui.Csv2Html.start(Csv2Html.java:121)

121行是

lines.forEach(line -> {

源代码:

protected void start() throws Exception {

    Path path = Paths.get(inputFile);

    FileOutputStream fos = new FileOutputStream(outputFile, true);
    PrintStream ps = new PrintStream(fos);

    boolean withTableHeader = (inputFile.length() != 0);
    try  {
        Stream<String> lines = Files.lines(path);
        lines.forEach(line -> {
            try {
                String[] columns = line.split(";");
                for (int i=0; i<columns.length; i++) {
                    columns[i] = escapeHTMLChars(columns[i]);
                }       
                if (withTableHeader == true && firstLine == true) {
                    tableHeader(ps, columns);
                    firstLine = false;
                } else {
                    tableRow(ps, columns);
                }


            } catch (Exception e) {
                e.printStackTrace();
            } finally {

            }
        });

    } finally {
        ps.close();
    }

}

问题答案:

您可以尝试通过使用方法(javadocs)的Files.lines(Path path, Charset charset)形式来利用正确的编码。lines

这是受支持的编码的列表(无论如何适用于Oracle
JVM)。 这篇文章表明“ Cp1252”是Windows
ANSI。



 类似资料:
  • 问题内容: 我正在用Java创建一个简单的单词计数程序,该程序可以读取目录中基于文本的文件。 但是,我继续收到错误消息: 从这行代码: 我知道可能是因为我使用了一个在文本文件中不包含某些字符的字符,其中一些包含其他语言的字符。但我想包括那些字符。 后来我在JavaDocs上了解到可选,并且仅用于更有效地读取文件,因此我将代码更改为: 但是某些文件仍然抛出。我不知道为什么 我想知道是否有一个包含所有

  • 本文向大家介绍jQuery 限制输入字符串长度,包括了jQuery 限制输入字符串长度的使用技巧和注意事项,需要的朋友参考一下 我们后台做程序的时候,比如录入一篇文章,文章会有摘要,我们希望文章的字符长度是我们可以控制的,我们不希望它太长,比如限制只能输入250个字符,下面的代码实现了这种功能。 先来看一下效果图 代码如下: 以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持呐喊教程

  • 本文向大家介绍TextField和TextView限制输入字数长度,包括了TextField和TextView限制输入字数长度的使用技巧和注意事项,需要的朋友参考一下 TextField和TextView限制输入长度的具体实现方法,供大家参考,具体内容如下 TextField的限制代理方法  只需要在这个代理方法里面code这样的代码就可以了 16 是长度可以自己设置 TextView的限制代理方

  • 我试图限制用户可以在文本字段中输入的字符的最大长度,但似乎不起作用。 以下是代码: 我做错什么了吗?我怎样才能使限制正常工作?

  • 考虑以下java代码: 此代码输出“”。所以是64字节,而SHA-256是32字节哈希。 我知道我指定了512位(64字节)作为密钥长度 然而,我希望生成的密钥(PBKDF2)将由SHA-256进行散列,这样无论我使用的密钥大小如何,输出都应始终为32字节。 我错过了什么(或者为什么我的期望是错误的)?

  • 我正在尝试使用pycrypto加密我的数据。我已经为此编写了以下代码。 但我的错误率越来越低 如何控制输入字符串?输入字符串可以是任意长度。