2016-02-01 104 views
1

我发现了几个类似标题的问题,但似乎无法用来解决我的问题。我似乎无法载入我的.csv文件:Scala java.nio.charset.UnmappableCharacterException:输入长度= 1

val source = io.Source.fromFile("C:/mon_usatotaldat.csv") 

返回:

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

所以,我想:

val source = io.Source.fromFile("UTF-8", "C:/mon_usatotaldat.csv") 

并得到:

java.nio.charset.IllegalCharsetNameException:C:/mon_usatotaldat.csv

我猜UTF-8是行不通的,如果文件不是UTF-8格式,这样才有意义,但我不知道接下来要做什么。

我已经成功地发现了编码使用的是Windows 1252:

val source = io.Source.fromFile("C:/mon_usatotaldat.csv").codec.decodingReplaceWith("UTF-8") 

但这并没有做什么,我的预期,这是将文件转换为UTF-8。我不知道如何使用它。

另一件事我已经试过了:

val source = io.Source.fromFile("windows-1252","C:/mon_usatotaldat.csv") 

但是返回:

java.nio.charset.IllegalCharsetNameException:C:/mon_usatotaldat.csv

请帮帮我。提前致谢。

+0

我不知道要作为答案来检查。我希望我可以检查两个.... – Laserbeak43

回答

3

尝试映射你的Excel文件为UTF-8,然后再尝试val source = io.Source.fromFile("UTF-8", "C:/mon_usatotaldat.csv")

映射到UTF-8试试:

(1)打开Excel文件,你必须将信息(。 XLS,.XLSX)

(2)在Excel中,选择“CSV(逗号分隔)(* .CSV)作为文件类型 和保存为该类型。

(3)在记事本(下找到“程序”然后(4)然后选择 - >另存为...并在“另存为”框的底部, 有一个选择框标记为“编码”。选择UTF-8(不要使用 ANSI,否则你会失去所有口音等)。选择UTF-8后,将该文件保存为 与原始文件略有不同的文件名。

该文件采用UTF-8格式,并保留所有字符和重音符,例如可以导入到MySQL和其他数据库程序中。

参考:Excel to CSV with UTF8 encoding

希望这有助于!

+0

我试图直接在记事本中打开它,因为我确实试图看看如果将它保存为逗号分隔文件将在昨晚工作,并且我得到了同样的错误。 @ ug_的建议在我用UTF-8格式保存的文件上确实有效,就像您建议的一样。原始文件没有运气。谢谢! – Laserbeak43

+0

没问题。干杯 – Rana

+1

这样一轮:'val source = io.Source.fromFile(“C:/mon_usatotaldat.csv”,“UTF-8”)' – sungiant

1

设置InputStreamReader以正确读取windows-1252。不要打扰中间的UTF-8。

+0

@ug_给了我他在评论中的答案,我有参数倒退。 :P但我很好奇,你是什么意思“不要打扰中间UTF-8”?这与我的表面技能水平有关吗? :) – Laserbeak43