具有显式给定字符编码的Groovy WithWriter方法破坏特定字符

时间:2013-09-06 10:28:34

标签: file-io encoding groovy

我读了一个用Windows-1250编码的文件。我将每行读入列表,然后执行一些追加操作并将集合存储到新文件中。

问题。如果我明确编写编码,那么输出文件似乎编码很糟糕。如果我没有设置任何编码,则输出正常。

enrichedFile.withWriter("windows-1250") { out ->
     tempFinalList.each() { line ->
          out.println line
     } 
}

=>输出不好

enrichedFile.withWriter { out ->
     tempFinalList.each() { line ->
         out.println line
     }
}

=>行。

仅供参考:我将它用于捷克语,字母为:ěščřžýáíé。

1 个答案:

答案 0 :(得分:1)

我没有看到任何问题。

def myFile = new File('./Archive/file.txt')
def tempFinalList = []

//Reading from the file with windows charset
myFile.withReader('windows-1250') { out ->
    out.eachLine{
        tempFinalList << it
    }
}

//Appending stuff
tempFinalList << 'a' << 'b'

//Creating a new file
def newFile = new File('./Archive/NewFile.txt')

//Writing to the new file with windows charset
newFile.withWriter('windows-1250'){out ->
    tempFinalList.each{out.writeLine it}
}

newFile.eachLine{println it}

file.txt的内容包含您提到的捷克字符。

最后一行的输出:

ešcržýáíé
ešcržýáíé
ešcržýáíé
ešcržýáíé
ešcržýáíé
a
b