Java 杰迪托潘没有';t通过BufferedReader读取时显示特殊分隔符
我正在创建一个自定义XML编辑器。我的xml文件包含许多特殊的分隔符,如·¥-§等。但当我读取一个文件并在JEditorPane中显示时,它不会读取它并显示其他内容,例如“for”和一些奇怪的字符。那么如何读取和显示文件的原样呢。以下是我为打开该文件而编写的代码:Java 杰迪托潘没有';t通过BufferedReader读取时显示特殊分隔符,java,swing,jeditorpane,Java,Swing,Jeditorpane,我正在创建一个自定义XML编辑器。我的xml文件包含许多特殊的分隔符,如·¥-§等。但当我读取一个文件并在JEditorPane中显示时,它不会读取它并显示其他内容,例如“for”和一些奇怪的字符。那么如何读取和显示文件的原样呢。以下是我为打开该文件而编写的代码: void openFile(){ BufferedReader br; try{ File file=open.getSelectedFile(); br=new BufferedReade
void openFile(){
BufferedReader br;
try{
File file=open.getSelectedFile();
br=new BufferedReader(new FileReader(file));
StringBuffer content=new StringBuffer("");
String line="";
while((line=br.readLine())!=null){
content.append(line+"\n");
}
br.close();
getEditorPane().setText(content.toString());
getEditorPane().setCaretPosition(0);
edit_tab.setTitleAt(edit_tab.getSelectedIndex(),file.getName());
fileNames.put(edit_tab.getSelectedIndex(),open.getSelectedFile().toString());
tab_title[edit_tab.getSelectedIndex()]=file.getName();
}
catch(Exception e){
JOptionPane.showMessageDialog(this,"Error reading file","READ ERROR",JOptionPane.ERROR_MESSAGE);
}
}
感谢…“此类的构造函数假定默认字符编码和默认字节缓冲区大小是合适的。要自己指定这些值,请在
文件InputStream
上构造一个InputStreamReader
”。您可能需要指定文件的编码。设置编码的正确方法是使用FileInputStream和InputStreamReader读取文件,我们可以在InputStreamReader的构造函数中设置编码,如下所示:
InputStreamReader is;
FileInputStream fs;
try{
File file=open.getSelectedFile();
fs=new FileInputStream(file);
is=new InputStreamReader(fs,"UTF-8");
br=new BufferedReader(is);
StringBuffer content=new StringBuffer("");
String line="";
while((line=br.readLine())!=null){
content.append(line+"\n");
}
br.close();
getEditorPane().setText(content.toString());
}
catch(Exception e){
}
请展示您是如何创建JEditorPane的。您正在设置特定的内容类型吗?pane=new-JEditorPane();设置字体(新字体(“Courier new”,字体粗体,15));setEditorKitForContentType(“text/xml”,新的XmlEditorKit());setContentType(“text/xml”);这里是XmlEditorKit用于语法HILIGHTING的类如果有人需要更多关于代码的信息,请务必告诉我……您可以设置系统属性
file.encoding
。