1

名前にダッシュ ("\u2013") が含まれる SVN のリポジトリにフォルダーがあります。ディレクトリのリストを取得するために、最初に「svn list」(私の Windows 7 + UTF-8 エンコーディング) を呼び出しています。その後、BufferedReader readLine() を呼び出して、リストのテキストを読み取ります。表示されているフォルダーの名前には、ダッシュ ("\u2013") の代わりにハイフン ("\u002D") が含まれています。

それに関して制限はありますか?

class Test {
    public static void main(String args[]) {
        BufferedReader br = null;
        try {
            String sCurrentLine;
            br = new BufferedReader(new FileReader("C:\\test–ing.xml"));
            System.out.println(br.readLine());
            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)
                    br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    } // end main
4

1 に答える 1

1

これはおそらく問題です:

br = new BufferedReader(new FileReader("C:\\test–ing.xml"));

これは、プラットフォームのデフォルトのエンコーディングを使用します。ファイルは UTF-8 でエンコードされていると述べたので、UTF-8 が必要であることを指定する必要があります。これは、FileReaderの破損した APIを回避することを意味します。

br = new BufferedReader(new InputStreamReader(
             new FileInputStream("C:\\test–ing.xml"), "UTF-8"));

これは、ファイルが実際に期待される文字を含む有効な UTF-8 であると想定しています。他のことをする前にそれを確認する必要があります。

あるいは、これが XML であることを考えると、実際のコードではXMLとして使用すると思いますか? その場合、入力ストリームから直接ロードして、XML パーサーにエンコーディングを処理させます。

于 2012-11-02T06:50:12.760 に答える