2016-07-07 16 views
0

Wekaでarffファイルを開こうとすると問題が発生します。Wekaでutf-8 arffファイルを使用しているときに構造体をarffとして特定できません。

arffファイルのエンコーディングをANSIに設定すると、すべてうまくいくようです。しかし、私は(私のデータが必要とするものである)エンコーディングをUTF-8に設定したときに、私は次のエラーを取得する:

Unable to determine structure as arff(Reason java.io.Exception: keyword @relation expected,read token[@relation], line 1).

私arffファイルが正しくフォーマットされているようです。

@relation myrelation 

@attribute pagename string 
@attribute pagetext string 
@attribute pagecategory string 
@attribute pageclass {0,1,2,3,4,5,6,7,8,9,10} 

@data 
....... 

注:私もRunWeka.iniでUTF-8へのファイルのエンコーディングを変更されたファイル

答えて

1

エラーが行1に言及したように、私はUTF-8ファイルにBOMを用いて書かれている疑いを持っていますファイルの先頭この不要なゼロ幅のスペースは、Windowsのメモ帳でUTF-8テキストファイルからANSIテキストファイルを区別するために使用されます。

BOMなしでファイルU+FEFFを作成します。これはプログラマのエディタ(JEdit、Notepad ++)や16進エディタで行うことができます。あるいは、最初の行を削除して再入力することもできます。ファイルサイズを確認してください。

多くのパーサーは、そのようなBOMを期待せず、空白とみなしてハングしません。

Path path = Paths.get("..."); 
String s = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); 
String t = s.replaceFirst("^\uFEFF", ""); 
if (!s.equals(t)) { 
    System.out.println("BOM character present in UTF-8 text"); 
    Files.write(path, t.getBytes(StandardCharsets.UTF_8)); // Replaces file! 
} 
+0

これは機能しました。どうもありがとうございます! – xro7

関連する問題