Ich versuche, eine Datei mit der Erweiterung mit vmd (Vocaloid Motion Data 0002) zu analysieren. Ich weiß nicht, welche Codierung es verwendet. Ich habe versucht, UTF-8, UTF-16, CS_ASCII und Windows-31j (Shift JIS), aber keiner von ihnen funktioniert (aber basierend auf dem, was ich weiß, sollte die meisten von UTF-8 auflösen, da das Byte für die meisten von 2 ist Figuren).Wie analysiere ich unbekannte Kodierungsdateien?
String testFile = rawFilePath+"/test.vmd";
BufferedWriter bw = null;
FileWriter fw = null;
fw = new FileWriter(outputPath+"/newFile.txt");
bw = new BufferedWriter(fw);
BufferedReader fBr = new BufferedReader(new InputStreamReader(
new FileInputStream(testFile), "UTF-8")); //US-ASCII windows-31j
int count=0;
String line;
while ((line = fBr.readLine()) != null) {
System.out.println(line);
bw.write(line);
bw.write("\r\n");
count++;
if(count > 3) { //print small portion of a larger file for testing
break;
}
...
}
Sowohl Druck und die Ausgabedatei schreibt so etwas:
???~?N ??????????P ?Z???^?[ ??kkkkkkkk
Ich habe mich gefragt, ob dies eine Codierung Problem ist, oder ein anderes Problem? Wie parse ich lesbare Daten daraus?
Was macht Sie denken, es ist Textinhalt? Binär-Dateien keine Kodierung haben, und es sei denn, der Verkäufer das Format dokumentiert hat, kann man nicht * decode * die Datei ohne Reverse-Engine es zu schaffen. –
Weil es in der Datei formatter http://mikikikudance.wikia.com/wiki/VMD_file_format im Abschnitt Datei-Header geschrieben wurde – logger
Das ist kein Textdateiformat. Lesen Sie die Dokumentation sorgfältiger. Es ist eine binäre Dateiformatspezifikation. Da der Text an einigen Stellen * string * verwendet, wird es nicht zu einer Textdatei. –