2011-07-01 1 views
0

私は、SwingアプリケーションとGlassFishにデプロイされたWebプロジェクトで使用されるSaxパーサークラスを持っています。Xerces Sax2パーサーエンコーディングの問題

クラスはxmlファイルを解析します。これはNetbeans IDE Swingアプリケーション(IDE)とWebプロジェクトで完全に機能します。

しかし、私は1つの.jarにアプリをスイングすると、xmlファイルからι、ķ、ļ、āのようなシンボルは認識されません。

cmdを使ってコンパイルして実行すると同じ問題が発生します。

Webプロジェクトで同じ問題が発生しましたか?Glassfishコンフィグレーションを使用してソートされていますか。

スイングアプリでこの問題を解決する方法は? setEncoding()メソッドから

public void parseDocument(String filePath) { 

    try { 
     XMLReader xr = XMLReaderFactory.createXMLReader(); 
     xr.setContentHandler(this); 
        InputSource is = new InputSource(new FileReader(filePath)); 
        is.setEncoding("UTF-8"); 
     xr.parse(is); 

    }catch(SAXException se) { 
     se.printStackTrace(); 
    }catch (IOException ie) { 
     ie.printStackTrace(); 
    } 
} 

何の助け:ここ

は、コードの平和です。

+0

コマンドラインで、NetbeanがJarを実行するために使用するJVMを使用できますか?私は、あるJVMが私のコードをうまく実行している間、もう一つは基盤となるXMLReaderの実装のせいではないという経験の問題があります。平和! – Alvin

+0

ありがとうAlvinあなたは正しい方向に解決策を探すために私を送ってくれました。 –

+0

@ sergej.artあなたが答えが好きなら、それをupvoteすることを忘れないでください、そしておそらくそれを受け入れてください。 –

答えて

0

私自身の質問に答える。

問題はJVM設定で問題でした。

私は、Windowsのシステム変数に新しい変数を追加しました:

Variable name:JAVA_TOOL_OPTIONS 
Variable value: -Dfile.encoding=UTF8 
を完璧に動作

1

あなたはすでに質問に答えていますが、これに対処できるもう1つの方法は、ファイルを開いたときに明示的に変換を設定することです。

public void parseDocument(String filePath) { 
    try { 
    XMLReader xr = XMLReaderFactory.createXMLReader(); 
    xr.setContentHandler(this); 
    Reader reader = new InputStreamReader(new FileInputStream(filePath); 
    InputSource is = new InputSource(reader, "UTF-8"); 
    is.setEncoding("UTF-8"); 
    xr.parse(is); 
    }catch(SAXException se) { 
    se.printStackTrace(); 
    }catch (IOException ie) { 
    ie.printStackTrace(); 
    } 
} 

この点とあなたの解決策の大きな違いは、FileInputStreamの上にInputStreamReaderを使用していることです。 FileReaderのjavadocによれば、デフォルトの文字セットを変更しているので、常に "デフォルトの文字セット"でファイルを開きます。ファイルを開く文字セットを明示的に指定することもできますが、そのためにはInputStreamReaderとFileInputStreamの組み合わせを使用する必要があります。

+0

それは動作します、ありがとう!あなたの推薦を使用します。 –

+0

@ sergej.artあなたが答えが好きなら、それをupvoteすることを忘れないでください、そしておそらくそれを受け入れてください。 –

関連する問題