使用Scanner读取UTF-8编码

7

在使用Scanner时,我遇到了UTF-8编码的问题。以下是我的数据文件中的两行示例:

000001 Mėlynas Tadas 63210309683 V 2003/03/17 2016/03/17 
000002 Raudonas Tomas 65505023282 V 2006/01/26 2018/01/26

目前我正在使用Scanner来分别读取文本,而不是整行读取,因为这样更方便,但由于编码的原因,它无法正确读取。我已经了解了使用InputStream等方法,但我不想处理杂乱的行切割。有没有一种方法可以在UTF-8下使用Scanner


1
用户在回答下发表评论:
哦,等等,我刚意识到自己是个白痴,因为我已经向我的数据文件中添加了数据,但没有修改代码以正确读取它... - Justin Dec 14 '14 at 21:21
- ppeterka
2个回答

12

这段代码片段可能会有所帮助:

Locale loc = new Locale("es", "ES");
Scanner sc = new Scanner(new FileInputStream(file), "UTF-8");
sc.useLocale(loc);

很遗憾,它没有成功。问题可能出现在数据被读取时由构造函数调用的设置器检查时。由于我在我的构造函数中进行了数据检查,所以它们告诉我数据有误。 - Justin
我很不擅长猜测你的代码在做什么 :) 你介意分享一下并更加具体地说明吗? - aviad
我在思考如何以最有效的方式完成这个任务,最终决定上传整个项目。希望这可以帮助理解我的问题: https://drive.google.com/folderview?id=0B2wRQ2r2rQGhbHotTU51WTFwWWc&usp=sharing - Justin
2
哦,等等,我刚意识到自己是个白痴,因为我已经向我的数据文件中添加了数据,但没有修改代码以正确读取它... - Justin

9

你试过这样写吗,Scanner myScanner = new Scanner("myFile", "UTF-8");


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接