我在swing中,通过Jfilechooser选择文件,然后用bufferreader读取doc文件,显示在jtextArea中为乱码,请问应该怎么解决。
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser jf = new JFileChooser("..\\稻田综合种养信息服务系统\\src\\files");
jf.setDialogTitle("Chose...");
int result = jf.showOpenDialog(getContentPane());
jf.setVisible(true);
File selectedFile = null;
FileReader fileReader=null;
BufferedReader bufferreader = null;
String line;
if (result == JFileChooser.APPROVE_OPTION) {
textArea.setText("");
File file=jf.getSelectedFile();
try {
fileReader=new FileReader(file);
bufferreader=new BufferedReader(fileReader);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
try {
while ((line = bufferreader.readLine()) != null) {
textArea.append(line + "\r\n");//按行读取文本,显示在TEXTAREA中
}
} catch (IOException e1) {e1.printStackTrace();
}
}
if (result == JFileChooser.CANCEL_OPTION) {
textArea.setText("");
textArea.setText("");
}
if (result == JFileChooser.ERROR_OPTION) {
textArea.setText("");
textArea.setText("");
}
}
});
最近在开发遇到需要将ASCII码进行编码的文件展示到前端页面上,但是直接提取内容会出现乱码问题,按照下面的方法则解决问题
response.setCharacterEncoding("utf-8");
String path = UrlUtil.getUrlUtil().getMessage_i2();
File file = new File(path);
StringBuffer sb = new StringBuffer();
InputStreamReader isr = null;
BufferedReader br = null;
if(file.isFile() && file.exists()){
try {
isr = new InputStreamReader(new FileInputStream(file),"GBK");
br = new BufferedReader(isr);
String lineTxt = null;
while((lineTxt = br.readLine()) != null){//按行输出读取的内容
sb.append(lineTxt+"
");
}
} catch (Exception e) {
sb.append("文件找不到!");
}
}else{
sb.append("文件找不到!");
}
System.out.println(sb.toString());
response.getWriter().write(sb.toString());
上面红色的字体是在取流时按照"GBK"编码取流