[问题] 使用Scanner读取utf-8会中断读取

楼主: baconcsie (Bacon)   2016-06-27 00:54:16
各位大大好,小弟最近在写一只程式,必须要读入utf-8的log资料
上面主要记录了许多使用者的ID,而玩家来自各国,所以有各种语言
其中会遇到一些ID,使用记事本看会看到乱码,用Notepad则会看到
一组编码,例如xE4这样,例如会有一个ID像这样 SchxE4llbchen
小弟我原本是想读到乱码时,写个特例处理掉,但是Scanner读取却
可能早在读到那一个乱码之前好几10行,就显示 hasNext() = false了
可是如果手动用文字编辑器去把那个乱码删掉,又可以完整读完整个档案
这让我无法针对他去做处理,请问各位大大,该如何处理呢?
作者: iFEELing (ing)   2016-06-27 01:37:00
所以你的hasNext()=false 是为什么? 那才是重点吧?
作者: omidofor (妈妈咪呀)   2016-06-27 02:43:00
换成Reader试试如何呢?
作者: iFEELing (ing)   2016-06-27 03:14:00
根据 https://goo.gl/CF5ppf hasNext吃到一堆东西都会停等等 你 scanner 是喂 BufferedReader 给它吃的吗
作者: ripple0129 (perry tsai)   2016-06-27 03:25:00
猜测scanner底层读进buffer时遇到就先挂点?才造成会是死在前几行。纯猜测,还是要run debug去抓吧
作者: kyleJ (资工人)   2016-06-27 08:34:00
Scanner会做很多判断 很容易因为乱码停止 用底层一点的BufferedReader或是新的API的Files.lines吧或是解决会存入乱码的原因呢?
楼主: baconcsie (Bacon)   2016-06-27 17:22:00
嗯嗯 我会改用更底层的api或其他api试试,至于来源档不要有乱码就没法度了,那是别人的程式
作者: Chikei ( )   2016-06-28 17:48:00
然而xE4不是乱码.......那是变音字,德国人错了嘛
作者: tacovirus (小璋丸)   2016-07-29 13:55:00
推 kyleJ 的作法,根据经验 Scanner 可靠性不高

Links booklink

Contact Us: admin [ a t ] ucptt.com