2010-10-13 14 views
0

Je crée un éditeur XML personnalisé. Mon fichier xml contient beaucoup de séparateurs spéciaux tels que | • ¥ ‡ § et tel autre. Mais quand je lis un fichier et l'affiche dans JEditorPane il ne le lit pas et affiche quelque chose d'autre comme • pour • et quelques caractères étranges. Alors, comment lire et afficher un fichier tel quel. ci-dessous est le code que je l'ai écrit pour ouvrir le fichier.JEditorPane n'affiche pas de séparateurs spéciaux pendant la lecture par BufferedReader

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

... merci

+1

S'il vous plaît montrer comment vous créez JEditorPane. Définissez-vous un type de contenu spécifique? – dogbane

+0

volet = nouveau JEditorPane(); pane.setFont (nouvelle police ("Courier New", Font.BOLD, 15)); pane.setEditorKitForContentType ("text/xml", nouveau XmlEditorKit()); pane.setContentType ("text/xml"); ici XmlEditorKit est la classe pour la syntaxe hilighting –

+0

si quelqu'un a besoin de plus sur le code alors faites-moi savoir ...... –

Répondre

1

la bonne façon de définir l'encodage est de lire le fichier en utilisant FileInputStream et InputStreamReader où l'on peut définir le codage dans le constructeur de InputStreamReader comme ci-dessous:

 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){ 

      } 
+1

+1 pour un bon exemple. – trashgod

+1

Vous pouvez définir la propriété système 'file.encoding'. – trashgod

1

« Les constructeurs de cette classe suppose que le caractère par défaut le codage et la taille par défaut octet mémoire tampon sont appropriées pour spécifiez ces valeurs vous-même, construisez un InputStreamReader sur un FileInputStream. "- FileReader. Vous devrez peut-être spécifier l'encodage du fichier.

+0

merci beaucoup ..... qui a été vraiment utile –