Scala 文件读取添加空格



我正在使用 scala 读取文件

def fileToString(that:String):String= {
    var x:String="" 
    for(line <- Source.fromFile(that).getLines){ 
        x += line + "n"
    }
  x
  }

这对于 scala 文件来说效果很好。但是在 txt 文件上,它会在每个字符之间添加空格。例如。我在.txt文件中阅读并得到这个:

C a l l E v e n t L o g ( E r r o r $ , E r r N u m , E r r O b j )

' E n d E r r o r h a n d l i n g b l o c k .

E n d S u b

我读了该程序的 scala 文件,它正常出现

编辑:这似乎与编码有关。当我将其更改为 UTF-16 时,它会读取.txt文件,但不会读取 scala 文件。有没有办法让它普遍工作?

不,它不能适用于所有文件。若要读取/解释文件/数据,需要知道格式/编码,除非将其视为二进制 blob。

以常用的 unicode 格式 (UTF-8) 保存所有文件,或者在读取文件时指定编码。
FromFile采用隐式编解码器,则可以显式传递它。

io.Source.fromFile("123.txt")(io.Codec("UTF-16"))

通常,如果您从文件中读取,则需要知道其编码才能正确读取字符。我不确定 Scala 假设的默认编码是什么,可能是 UTF8,但您可以将Codec传递给 fromFile ,或者将编码指定为字符串:

io.Source.fromFile("file.txt", "utf-8")

很难确定,但听起来这两个文件是用不同的编码编写的。在任何 Unix 系统(包括 Mac)上,您可以使用命令od查看文件中的实际字节数。

UTF-8 是大多数系统上普通文本文件的标准,但如果混合使用 UTF-8 和 UTF-16,则必须知道对哪些文件使用哪种编码并正确指定编码。

或者在创建文件时要更加小心,以确保它们都采用相同的格式。

最新更新