Seite 1 von 1

Probleme mit deutschen Sonderzeichen

Verfasst: 22. Dezember 2023 13:15
von dieter_
Der nachfolgende Code funktioniert dann nicht korrekt, wenn der QString folder beispielweise ein ä enthält.
Das Verzeichnis "Währung" wird erstellt, enthält aber nicht das ä.

Code: Alles auswählen

QString befehl,folder;
folder = "~/Schreibtisch/Währung";
//qDebug() << "folder verzeichnisse_anlegen" << folder;
befehl = "mkdir " + folder;
if(system (befehl.toLatin1().data()))
      befehl = "";
Bei der qDebug() Ausgabe wird das ä in Währung noch korrekt angezeigt.
Das erstellte Verzeichnis hat dann diesen Namen:

Code: Alles auswählen

file:///home/dieter/Schreibtisch/W%E4hrung
Es liegt an der Kodierung. Wie muss ich den QString folder umkodieren?

Grüße aus Südbaden

Re: Probleme mit deutschen Sonderzeichen

Verfasst: 23. Dezember 2023 08:04
von helmut.jakoby
Guten Morgen Dieter,
Mal ins Blaue, aber ich glaube, dass Linux mit dem Zeichensatz "UTF-8/Unicode" und Windows mit "UTF-16/Unicode". Ich kann mich an irgendein Projekt erinnern, wo wir unter Windows auf WString konvertieren mussten.
Also, ich würde probieren über studieren stellen.
Probiere doch mal alle QString-Konvertier-Methoden aus:

Code: Alles auswählen

std::string	toStdString() const
std::u16string	toStdU16String() const
std::u32string	toStdU32String() const
std::wstring	toStdWString() const
QByteArray	toUtf8() const
qsizetype	toWCharArray(wchar_t *array) const
Schöne Festtage 🎄✨

Re: Probleme mit deutschen Sonderzeichen

Verfasst: 23. Dezember 2023 18:43
von dieter_
Guten Abend Helmut,
Danke für Deine Hinweise.

So sieht die Lösung aus:
Ich habe bei dem system befehl die Kodierung geändert. So funktioniert das korrekte Anlegen eines Verzeichnisses mit Sonderzeichen und auch das Kopieren von Dateien mit Sonderzeichen:

Code: Alles auswählen

befehl = "mkdir " + folder;
if(system (befehl.toUtf8().data()))
           befehl = "";

Re: Probleme mit deutschen Sonderzeichen

Verfasst: 23. Dezember 2023 20:42
von helmut.jakoby
Hallo Dieter,
das freut mich.
Beste Grüße
Helmut