2009-03-04 8 views
1

Wenn ich aus einem Word-Dokument in einen QT TextEditor kopiere und einfüge, scheint es gut zu sein. Wenn ich jedoch versuche, mit toPlainText oder toHTML auf den Text zuzugreifen, wird der Text mit allen Anführungszeichen (doppelt und einzeln) als Fragezeichen zurückgegeben. Gibt es einen Weg dahin? Ich verwende die qt4-qtruby-Bindungen.QTextEditor gibt Anführungszeichen als Fragezeichen in QT zurück.

Antwort

1

Das ist, weil die Zitate, die in Word benutzt werden, nicht wirklich ASCII-Anführungszeichen sind - Sie sind irgendeine Art funky Unicode-Charakter, der wie ein Zitat aussieht.

Für HTML, wenn Sie UTF-8-Codierung verwenden, sollte es gut funktionieren. Für einfachen Text, obwohl Sie ziemlich viel Glück haben.

Hier ist ein nice page with some more info

0

Ich nehme an, dass Sie ein QTextEdit verwenden. Ich denke, das Problem liegt in der Kodierung. Versuchen Sie, das Word-Dokument als einfachen Text zu speichern und das gleiche zu versuchen. Wenn es wichtig ist, mit Word zu interagieren, denke ich, dass Sie herausfinden müssen, wie Sie die Codierung beim Kopieren und Einfügen ändern können.

Bearbeiten
Geben Sie die Lösung an, die Sie letztendlich verwenden. Ich bin sehr interessiert.

Ich bin neu in QT und das ist nur meine Meinung.

Ich hoffe, das hilft.

+0

Ich habe noch keine befriedigende Antwort gefunden. Aber an dieser Stelle scheint es eine Inkompatibilität in den Rubinbindungen zu geben, die in den QT-Bibliotheken verknüpft sind. Wenn Sie nur gerade c oder C++ verwenden, bin ich mir sicher, dass Sie dieses Problem nicht sehen werden, oder zumindest können Sie es beheben, indem Sie die Codierung festlegen. – GitNick

+0

Danke für die Antwort. Ich werde weiterhin nach einer Antwort suchen. Lassen Sie es mich wissen, wenn Sie es herausfinden. – batbrat

0

Wenn Sie toPlainText sind() aufrufen, es gibt einen QString. QString ist intern Unicode, so lange die Daten innerhalb des QString liegen, sollte es in Ordnung sein. Wenn Sie die Daten mithilfe von toAscii() aus dem QString abrufen, wird die fehlerhafte Konvertierung ausgeführt.
Wenn diese Theorie korrekt ist, verwenden Sie toUft8() anstelle von toAscii() auf dem QString.