我正在尝试读取包含特殊字符的txt文件,但其中一些字符被读作方块。
这里的代码。
package reader;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Reader {
public static void main(String[] args) throws IOException {
File file = new File("cfg.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while( (line=reader.readLine()) != null ){
System.out.println(line);
}
}
}
文件:
ÉCltTctocsWicÉ#V^ÊûJö=
控制台输出:
�CltTctocsWic�#V^��J�=
该项目使用的是UTF-8。已经尝试过与FileInputStream相同的结果。
我需要另一位读者吗?
修改:解决
感谢@shmosel,文本文件不是UTF-8 感谢@ACV,InputStreamReader是必要的。
这里是新代码:
public class Reader {
public static void main(String[] args) throws IOException {
File file = new File("cfg.txt");
/*to write*/
BufferedWriter ou = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(file),"UTF8"));
ou.append("ÉCltTctocsWicÉ#V^ÊûJö=");
ou.close();
/*to read*/
BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream(file), "UTF8"));
String line;
while( (line=in.readLine()) != null ){
System.out.println(line);
}
}
}
答案 0 :(得分:0)
<ul id="someid">
<li>test1</li>
<li>test2</li>
<li>test3</li>
<li>test4</li>
<li>test5</li>
</ul>
所以基本上UTF-8文件必须像二进制文件一样读取 - 使用FileInputStream