JEditorPane не отображает специальные разделители при чтении BufferedReader

Я создаю собственный XML-редактор. Мой файл xml содержит множество специальных разделителей, таких как ¦ • ¥ ‡ § и тому подобное. Но когда я читаю файл и отображаю его в JEditorPane, он не читает его и отображает что-то еще, например «for» и некоторые странные символы. Итак, как можно прочитать и отобразить файл как есть. ниже приведен код, который я написал, чтобы открыть файл:

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);
   }
}

Спасибо...


person Suraj Air    schedule 13.10.2010    source источник
comment
Пожалуйста, покажите, как вы создаете JEditorPane. Вы устанавливаете определенный тип контента?   -  person dogbane    schedule 13.10.2010
comment
панель = новая JEditorPane(); pane.setFont(новый шрифт(Courier New,Font.BOLD,15)); pane.setEditorKitForContentType (текст/xml, новый XmlEditorKit()); панель.setContentType(текст/xml); здесь XmlEditorKit — класс для подсветки синтаксиса   -  person Suraj Air    schedule 13.10.2010
comment
если кому-то требуется больше о коде, дайте мне знать......   -  person Suraj Air    schedule 13.10.2010


Ответы (2)


правильный способ установить кодировку — прочитать файл с помощью 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){

          }
person Suraj Air    schedule 15.10.2010
comment
Вы можете установить системное свойство file.encoding. - person trashgod; 18.10.2010

«Конструкторы этого класса предполагают, что кодировка символов по умолчанию и размер байтового буфера по умолчанию являются подходящими. Чтобы указать эти значения самостоятельно, создайте InputStreamReader на FileInputStream». — FileReader. Возможно, вам потребуется указать кодировку файла.

person trashgod    schedule 13.10.2010