0

HTML ページからテキスト ファイルに抽出されたキリル文字のコンテンツがあります。このファイルではキリル文字は問題ありません。次に、このファイルを使用して、Jena を使用して RDF ファイルを作成します。これが私のコードです:

private void createRDFFile(String webContentFilePath) throws IOException {
    // TODO Auto-generated method stub
    Model model = ModelFactory.createDefaultModel();

    RDFWriter writer = model.getWriter("RDF/XML");
    writer.setProperty("showXmlDeclaration", "true");
    writer.setProperty("showDoctypeDeclaration", "true");
    writer.setProperty("tab", "8");
    Writer out = new BufferedWriter(new OutputStreamWriter(
            new FileOutputStream(rdfFilePath), "UTF8"));
    Resource resDest = null;
    Property hasTimeStart = model.createProperty(ns + "#hasTimeStart");
    Property distrName = model.createProperty(ns + "#distrName");
    Property moneyOneDir = model.createProperty(ns + "#moneyOneDir");
    Property moneyTwoDir = model.createProperty(ns + "#moneyTwoDir");
    Property hasTimeStop = model.createProperty(ns + "#hasTimeStop");

    BufferedReader br = new BufferedReader(new FileReader(
            webContentFilePath));
    String line = "";
    while ((line = br.readLine()) != null) {
        String[] arrayLine = line.split("\\|");
        resDest = model.createResource(ns + arrayLine[5]);
        resDest.addProperty(hasTimeStart, arrayLine[0]);
        resDest.addProperty(distrName, arrayLine[1]);
        resDest.addProperty(moneyOneDir, arrayLine[2]);
        resDest.addProperty(moneyTwoDir, arrayLine[3]);
        resDest.addProperty(hasTimeStop, arrayLine[4]);
    }
    br.close();
    model.write(System.out, "RDF/XML");
    writer.write(model, out, null);

}

RDF ファイルを開くと、キリル文字は РўР РђРќРЎРљРћРџ-Р'Р?ТОЛА のようになります。誰か助けてくれませんか?

4

2 に答える 2

2

webContentFilePath出力ライターの UTF-8 書き込みエンコーディングは正しいように見えるため、正しいエンコーディングで読み取っていないことが示唆されます。診断として、そのファイルを読み込んでから、プレーンな UTF-8 ファイル (RDF なし) に書き出すことができます。私の推測では、ファイル エンコーディングを に設定することを明示的に指定brするか、スクレイピングされた Web ページが最初から UTF-8 で書き出されるようにする必要があります。

于 2013-07-28T10:29:21.863 に答える
1

出力は正しいかもしれませんが、正しく表示されていません。

new FileReader(...) は、プラットフォームのデフォルトの文字セットでファイルを開きます。これは Windows では UTF-8 ではないため、正しく表示されている場合は、UTF-8 以外で表示されている可能性があります。

Jena はデフォルトで UTF-8 で書き込みますが、この場合も同様です。

そのため、ファイルを書き込むとき、入力を表示したのと同じ方法でファイルを表示することはできません。UTF-8 対応のビューアーで表示する必要があります。

于 2013-07-29T13:03:46.420 に答える