我正在尝试从文本文件中读取UTF-8并进行一些标记化,但我遇到了编码问题:
try {
fis = new FileInputStream(fName);
} catch (FileNotFoundException ex) {
//...
}
DataInputStream myInput = new DataInputStream(fis);
try {
while (thisLine = myInput.readLine()) != null) {
StringTokenizer st = new StringTokenizer(thisLine, ";");
while (st.hasMoreElements()) {
// do something with st.nextToken();
}
}
} catch (Exception e) {
//...
}
Run Code Online (Sandbox Code Playgroud)
和DataInputStream没有任何参数来设置编码!
让我引用Javadoc这个方法.
DataInputStream.readLine()
已过时.此方法无法将字节正确转换为字符.从JDK 1.1开始,读取文本行的首选方法是通过BufferedReader.readLine()方法.使用DataInputStream类读取行的程序可以通过替换表单的代码转换为使用BufferedReader类:
DataInputStream d = new DataInputStream(in);
Run Code Online (Sandbox Code Playgroud)
有:
BufferedReader d
= new BufferedReader(new InputStreamReader(in));
Run Code Online (Sandbox Code Playgroud)
顺便说一句:JDK 1.1于1997年2月问世,所以这对你来说不是什么新鲜事.
想想如果你读过Javadoc,每个人都会节省多少时间.;)