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

时间:2016-02-01 22:03:10

标签: scala character-encoding

我发现了几个类似标题的问题,但似乎无法使用任何问题来解决我的问题。我似乎无法加载我的.csv文件:

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

请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:3)

首先尝试将您的Excel文件映射到UTF-8,然后尝试@RequestMapping(value = "/url", method = RequestMethod.GET)

要映射到UTF-8,请尝试:

  

(1)打开一个Excel文件,其中包含信息(.xls,.xlsx)

     

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

     

(3)在NOTEPAD中(在"程序"和开始中的附件下找到)   菜单),在记事本中打开已保存的.csv文件

     

(4)然后选择 - >另存为...并在"底部另存为"框,   有一个标记为"编码"的选择框。选择UTF-8(不要使用   ANSI或你丢失所有口音等)。选择UTF-8后,保存   该文件与原始文件名略有不同。

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

参考:Excel to CSV with UTF8 encoding

希望这有帮助!

答案 1 :(得分:1)

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