Я использую замазку (версия .70) и тип набора символов UTF-8 включен. Запуск программы C на машине CentOS также является переменной среды $LANG
устанавливается как en_GB.UTF-8. Я получаю пользовательский ввод (через scanf) как UTF-8 (например: 中国 话 不用) для подсчета символов UTF-8. Это нормально, но я хочу снова изменить пользовательский ввод (через scanf) (для примера: 中国 话) с существующего. Если я хочу изменить пользовательский ввод, мне нужно дважды нажать клавишу «backspace», чтобы удалить одиночный UTF-8 символ Почему это не работает в окне вывода?
Вы можете видеть пространство между курсором и следующим символом, что приводит к неправильному счету. Как решить эту проблему
Какие? Зачем вам нужно удалять символы, если вы хотите считать символы?
—
Seth
@seth Например: я хочу получить пользовательский ввод как «中国 话 不用 彁 字。». Теперь я собираюсь ввести только 3 вышеупомянутых символа, отредактировав их как «中国 needs», для удаления которых необходимо использовать клавишу возврата, нам нужно нажать клавишу возврата 2, чтобы удалить один символ UTF-8 в окне замазки.
—
Anas Badhusha
Да, но я все еще не понимаю, что вы пытаетесь сделать. Вы говорите, что хотите считать символы UTF-8. Эта программа, очевидно, занимает
—
Seth
stdin
поэтому вы набираете китайские иероглифы и вдруг говорите об удалении символов, просто чтобы завершить вопросом о выводе, о котором вы никогда не упоминали до этого момента.
изменил описание
—
Anas Badhusha
Проверяли ли вы документацию и настройки вашего компилятора всякий раз, когда они настраиваются для правильной обработки многобайтовых символов? UTF-8 может использовать несколько кодовых точек для представления одного символа. Таким образом, вы можете оказаться в ситуациях, когда вы удаляете отдельные кодовые точки, а не полный «символ».
—
Seth