В замазке UTF-8 редактирование символов не работает?

308
Anas Badhusha

Я использую замазку (версия .70) и тип набора символов UTF-8 включен. При запуске программы C на машине CentOS также переменная окружения $LANGустанавливается как en_GB.UTF-8. Я получаю пользовательский ввод (через scanf) как UTF-8 (например: 中国 话 不用) для подсчета символов UTF-8. Это нормально, но я хочу снова изменить пользовательский ввод (через scanf) (например: 中国 话) с существующего. Если я хочу изменить пользовательский ввод, мне нужно дважды нажать клавишу «backspace», чтобы удалить одиночный UTF-8 символ Почему это не работает в окне вывода?

enter image description here

Вы можете видеть пространство между курсором и следующим символом, что приводит к неправильному счету. Как решить эту проблему

0
Какие? Зачем вам нужно удалять символы, если вы хотите считать символы? Seth 6 лет назад 0
@seth Например: я хочу получить пользовательский ввод как "中国 话 不用 彁 字。". Теперь я собираюсь ввести только 3 вышеуказанных символа, отредактировав их как «中国 needs», для удаления которых необходимо использовать клавишу возврата, нам нужно нажать клавишу возврата 2, чтобы удалить один символ UTF-8 в окне замазки. Anas Badhusha 6 лет назад 0
Да, но я все еще не понимаю, что вы пытаетесь сделать. Вы говорите, что хотите считать символы UTF-8. Эта программа, очевидно, использует `stdin`, поэтому вы набираете китайские иероглифы и вдруг говорите об удалении символов, чтобы завершить вопрос о выводе, который вы никогда не упоминали до этого момента. Seth 6 лет назад 0
изменил описание Anas Badhusha 6 лет назад 0
Проверяли ли вы документацию и настройки своего компилятора всякий раз, когда они настраиваются для правильной обработки многобайтовых символов? UTF-8 может использовать несколько кодовых точек для представления одного символа. Таким образом, вы можете оказаться в ситуациях, когда вы удаляете отдельные кодовые точки, а не полный «символ». Seth 6 лет назад 0

0 ответов на вопрос