In putty funktioniert die UTF-8-Zeichenbearbeitung nicht?

358
Anas Badhusha

Ich verwende Putty (Version .70) und den Zeichensatztyp UTF-8 ist aktiviert. Beim Ausführen des C-Programms in der CentOS-Maschine wird auch eine Umgebungsvariable $LANGals en_GB.UTF-8 festgelegt. Ich erhalte die Benutzereingabe (über scanf) als UTF-8 (zum Beispiel: 中国 话 不用), um UTF-8-Zeichen zu zählen. Es ist in Ordnung, aber ich möchte die Benutzereingabe (durch scanf) erneut (von Ex: 中国 话) von der vorhandenen ändern. Wenn ich die Benutzereingabe ändern möchte, muss ich die "backspace" -Taste zweimal verwenden, um die Single zu löschen UTF-8-Zeichen. Warum funktioniert es nicht im Ausgabefenster?

In putty funktioniert die UTF-8-Zeichenbearbeitung nicht?

Sie können den Abstand zwischen dem Cursor und dem nächsten Zeichen sehen, was zu einer falschen Zählung führt. So lösen Sie dieses Problem

0
Was? Warum müssen Sie Zeichen löschen, wenn Sie Zeichen zählen möchten? Seth vor 5 Jahren 0
@seth Zum Beispiel: Ich möchte die Benutzereingabe als "中国 话 不用 彁 字。" erhalten. Jetzt werde ich die obigen 3 Zeichen nur durch Editieren als "中国 话" eingeben, das zum Löschen die Rücktaste verwenden muss. Zu diesem Zeitpunkt müssen wir die Rücktaste 2 drücken, um ein einzelnes UTF-8-Zeichen in einem Putty-Fenster zu löschen. Anas Badhusha vor 5 Jahren 0
Ja, aber ich verstehe immer noch nicht, was Sie versuchen. Sie wollen UTF-8-Zeichen zählen. Dieses Programm benötigt anscheinend 'stdin', so dass Sie Ihre chinesischen Zeichen eingeben und plötzlich davon sprechen, dass Sie Zeichen löschen, um sie mit einer Frage über die Ausgabe zu schließen - die Sie bis dahin nie erwähnt haben. Seth vor 5 Jahren 0
hat die Beschreibung geändert Anas Badhusha vor 5 Jahren 0
Haben Sie die Dokumentation und Ihre Compilereinstellungen immer überprüft, wenn sie für die korrekte Verarbeitung von Multibyte-Zeichen eingerichtet wurden? UTF-8 kann mehrere Codepunkte verwenden, um ein einzelnes Zeichen darzustellen. So kann es sein, dass Sie in Situationen geraten, in denen Sie einzelne Codepunkte und nicht den gesamten "Buchstaben" löschen. Seth vor 5 Jahren 0

0 Antworten auf die Frage