Betreff des Beitrags: Siebenwind-Log mit allen Chars
Verfasst: 25.07.14, 16:17
Festlandbewohner
Registriert: 10.06.14, 17:37 Beiträge: 1132
Hallihallo,
ich hätte gerne alles was meinen Chars um die Ohren fliegt geloggt. Ein einfaches Haken-Setzen tut gar nix. Beim nächsten Start ist der Haken wieder weg.
Auch eine Änderung an der cfg brachte nichts. Ich habe zudem versucht, die .txt erst einmal händisch zu erstellen, sie bleibt leider leer.
Zudem wärs mir wichtig, dass dies bei allen meinen Chars umgesetzt wird, nicht nur bei einem.
Kann mir jemand helfen?
Tante Edit sagt: Habe inzwischen herausgefunden, dass es nicht auf die Änderung des .cfg ankommt. Wenn ich unter "7windEinstellungen.exe" den Pfad angebe, dann klappt es halbwegs. Gibt es eine Möglichkeit das so einzustellen, dass Ich Umlaute habe, aber KEINE Leerstellen nach jedem Buchstaben?
Betreff des Beitrags: Re: Siebenwind-Log mit allen Chars
Verfasst: 25.07.14, 16:52
Techniker
Registriert: 17.10.09, 16:47 Beiträge: 913
Wahrscheinlich ist das ausgewählte Verzeichnis schreibgeschützt. Oder Du findest die Logs nicht, unter Windows 7 werden sie in irgendeinem User Verzeichnis abgespeichert.
Ein Lösungsansatz: 7wind mit Administratorrechten starten. Zweiter Lösungsansatz: Rechtsklick auf das Log-Verzeichnis und die entsprechenden Rechte für den jeweiligen User einstellen. Dritter Lösungsansatz: Mehr Informationen.
Betreff des Beitrags: Re: Siebenwind-Log mit allen Chars
Verfasst: 25.07.14, 18:10
Techniker
Registriert: 17.10.09, 16:47 Beiträge: 913
Ehrlich gesagt... kann das auch mehrere Ursachen haben. Und ne einfache Lösung weiss ich nicht. :/
Bist Du dir sicher, dass dein Texteditor (im Zweifelsfall Notepad++ verwenden) die richtige Codierung verwendet?
Falls ja, gibt es mehrere UO Log Converter, wobei ich nicht sagen kann wie gut sie mit UTC-8 umgehen können.
Umlaute wurden dem Client erst recht spät (ca. 2000) hinzugefügt. "Unsere" Version ist von 2004, somit sollte ein ordentlicher Support für Umlaute selbst in Textdateien gegeben sein.
Betreff des Beitrags: Re: Siebenwind-Log mit allen Chars
Verfasst: 25.07.14, 19:38
Techniker
Registriert: 11.09.03, 00:36 Beiträge: 8161
Setz mal folgedes in der 7w.cfg. Dann logst zwar nur Ascii, aber besser als ein unbrauchbares Log.
JournalSaveFile=C:\Program Files (x86)\Siebenwind\Tagebuch\7wind-Tagebuch.txt <-- Hier dein Verzeichnis rein und Berechtigungen richtig setzen. SaveJournal=on JournalSaveUnicode=off
Betreff des Beitrags: Re: Siebenwind-Log mit allen Chars
Verfasst: 27.07.14, 14:50
Techniker
Registriert: 17.10.09, 16:47 Beiträge: 913
An sich sollte der UO Journal Converter die Logs zuverlässig in HTML Dokumente umwandeln. Leider bekomme ich jenen unter Windows 7 64-bit nicht zum laufen.
Ansonsten... Ist wohl der Workaround dass man Unicode ausstellt und mit den fehlenden Umlauten lebt. Man kann leider nichts gegen die vielen Leerzeichen tun, da die Textdatei in nicht standard-konformen Unicode abgespeichert wird. (Es gibt nichtmals nen Fileheader.)
Fehler ist schon länger bekannt, aber nie als wirkliches Problem gesehen worden.
Probier mal folgendes Skript (für ein ausführen brauchst du entweder C# Kenntnisse oder du lädst es einfach in Linqpad ( http://www.linqpad.net ) ein und drückst Play). Habe leider keine Logdatei hier, konnte es also nicht testen, sollte das Problem aber beheben, notfalls müsste man noch am Eingabeformat feilen, was aber kein Problem wäre wenn ich eine Logdatei (zugeschickt) bekommen würde.
Betreff des Beitrags: Re: Siebenwind-Log mit allen Chars
Verfasst: 28.08.14, 04:08
Techniker
Registriert: 17.10.09, 16:47 Beiträge: 913
Moin,
das Problem der 7w Unicode Logdatein liegt daran, dass Zeilenumbrüche in einem sehr seltsamen Windows-Legacy format abgespeichert wurden.
Versteckter Inhalt bzw. Spoiler :
Es wurde an sich UTF-16LE oder UCS-2 LE als Kodierung verwendet. Die Byte Sequenz für den Zeilenumbruch im Hex Format war 0D 0A 00 (3 Bytes) anstatt 0D 00 0A 00 (4 Bytes) - somit haben Notepad und Notepad++ die Kodierung als UTF-8 'erkannt'. Zudem war ein 0D 00 zuviel eingesetzt beim Zeichenumbruch.
Ich habe nen kleines Tool geschrieben welches aus...
Versteckter Inhalt bzw. Spoiler :
T e s t T e x t i n U n i c o d e .
A u c h ä Ä ö Ö ü Ü f u n k t i o n i e r e n .
Versteckter Inhalt bzw. Spoiler :
Test Text in Unicode. Auch ä Ä ö Ö ü Ü funktionieren.
Das zu konvertierende Log in "7wLog.txt" umbennen. (Oder das Programm mit dem jeweiligen Log - Dateinamen als Kommandozeilenargument aufrufen.)
Die Datei ausführen.
Es wird eine neue Datei erstellt, die mit "converted_" beginnt.
Das Tool verändert die ursprüngliche Logdatei nicht.
Der Source:
Versteckter Inhalt bzw. Spoiler :
Der gesamte Code ist in Standard C++11 geschrieben und sollte auf allen Plattformen zu kompilieren sein. Bei Verbesserungsvorschlägen oder Problemen, bitte eine PN an mich.
Code:
// Copyright(c) 2014 LeCorbeau | andrecorbeau@icloud.com // This software is provided 'as-is', without any express or implied warranty.In no event will the authors be held liable for any damages arising from the use of this software. // Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions : // 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software.If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. // 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. // 3. This notice may not be removed or altered from any source distribution.
if (!oldLog.is_open()) { cout << "Could not open " << filename << " ! Please ensure that you're passing the correct path as a commandline argument or rename your logfile to '7wLog.txt'!"; exit(-1); }
cout << "Bytes read: " << memory.size() << endl; if (convertedLog.is_open()) { // Lets set the BOM Header 0xFFFE so that Notepad++ will recognize the endianess immediatly. memory.insert(memory.begin(), 0xFE); memory.insert(memory.begin(), 0xFF);
// Well.. We'll loose a character at the end of this loop. But we won't get any out-of-bound errors. for (vector<unsigned char>::iterator it = memory.begin(); (it + 2) != memory.end(); ++it) { writeByte = *it;
if (skipNextCR && *it == 0x0D && *(it + 1) == 0x00) { // We want to skip the next byte, which would be 0x00.. it++; skipNextCR = false; } else convertedLog.write(reinterpret_cast<char*>(&writeByte), 1);
if (*it == 0x0D && *(it + 1) == 0x0A && *(it + 2) == 0x00) { // This makes... 0D0A00 into 0D000A00 - which is a valid Unicode! writeByte = 0x00; convertedLog.write(reinterpret_cast<char*>(&writeByte), 1); skipNextCR = true; } } // And here we're adding that last byte. writeByte = memory[memory.size() - 1]; convertedLog.write(reinterpret_cast<char*>(&writeByte), 1);
cout << "Successfully converted the logfile to " << filename << " with a filesize of " << convertedLog.tellp() << " Bytes." << endl; convertedLog.close(); } else { cout << "Could not open " << filename << " ! Please ensure that you've got enough diskspace to be able to make a copy of your logfile."; exit(-1); } exit(0); }
Bei Fragen, Problemen oder Verbesserungsvorschlägen kann man mir gern eine PN schreiben. Ich hoffe es wird von Nutzen sein. - LeCorbeau
Edit: Tool aktualisiert, Sourcecode hinzugefügt und etwas formatiert.
_________________ LeCorbeau >> Discord
Zuletzt geändert von LeCorbeau: 13.09.14, 20:54, insgesamt 3-mal geändert.
Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste
Sie dürfen keine neuen Themen in diesem Forum erstellen. Sie dürfen keine Antworten zu Themen in diesem Forum erstellen. Sie dürfen Ihre Beiträge in diesem Forum nicht ändern. Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.