Wie können Nicht-ASCII-Zeichen in einem QString erkannt werden?

8

Ich möchte feststellen, ob der Benutzer ein Nicht-ASCII-Zeichen (andernfalls falsch als Unicode bezeichnet) (z. B. り) in einem Dateispeicherdialogfeld eingegeben hat. Während ich Qt verwende, werden alle Nicht-ASCII-Zeichen korrekt in einem QString gespeichert, aber ich kann nicht herausfinden, wie bestimmt werden kann, ob eines der Zeichen in dieser Zeichenfolge Nicht-ASCII ist, bevor die Zeichenfolge in ASCII konvertiert wird. Das obige Zeichen wird als ã‚Š in das Dateisystem geschrieben.

    
Roderick 07.01.2014, 20:23
quelle

3 Antworten

6

Es gibt keine solche eingebaute Funktion in meinem Verständnis.

Vor ungefähr 1-2 Jahren schlug ich eine isAscii () - Methode für QString / QChar vor, um das Low-Level-Unix-isacii () und die entsprechende Windows-Funktion zu umbrechen, aber es wurde abgelehnt. Du hättest dann so etwas schreiben können:

%Vor%

Ich denke immer noch, dass dies eine praktische Funktion wäre, wenn Sie den Betreuer davon überzeugen könnten. : -)

Abgesehen davon müssten Sie selbst gegen die Ascii-Grenze prüfen, fürchte ich. Sie können dies selbst wie folgt tun:

%Vor%

Einzelheiten finden Sie in der Dokumentation:

  

ushort QChar :: unicode () const

     

Dies ist eine überladene Funktion.

    
lpapp 07.01.2014, 20:38
quelle
8

Der einfachste Weg ist, den Code jedes Charakters zu überprüfen ( QChar :: unicode () ) weniger als 128, wenn Sie reines 7-Bit ASCII benötigen.

    
Oleg Shparber 07.01.2014 20:38
quelle
1

Um es kompakt ohne Schleife zu schreiben, können Sie den regulären Ausdruck verwenden:

%Vor%     
Pali 03.09.2017 20:44
quelle

Tags und Links