При удалении введенных ранее русских символов в input() пояляется аномальное поведение в методах socket.send() и fd.read()

Имеется сервер, который распределяет сообщения от клиентов. chat gpt это на моём сервере.

При отправке в тот же chat gpt строки с русскими символами возникает ситуация когда строка успешна и без ошибок достигает моего сервера и бот генерирует корректный ответ и отдаёт его серверу также без ошибок и каких-либо деформаций текста, но до клиента ответ в виде строки с ответом попросту не доходит и клиент зависает. Это происходит только в том, и только в том, случае если хотя бы один символ кириллицы в поле input на стороне клиента был удален.

Аналогичная проблема возникает с записью в файл и последующим считывании русскоязычной строки в которой был удален хоть один символ кирилицы, но тут уже возникает ошибка utf-8 или попросту считывание с файла выдает строку с неотображаемыми символами и ранее удаленными символами кирилицы.

Я думал решить эту проблему просто тем что буду отслеживать удаленные символы, но метод input() в python не даёт такой возможности, а выходная строка при выводе с помощью print() не выводит деформированной строки с неивестными символами и никакой len() не видит удаленные символы и даёт длину строки без учета удаленных символов или неизвестных символов.

Прошу попросту подсказать какие возможные решения могут быть?


Ответы (1 шт):

Автор решения: Dart5678899765444

Решением стало выходную строку input() перебрать по символьно и собрать новую строку с этими же символами:

def input_correction(s):
    ru = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ,.:?!;%()-+[]{}|@ "
    s2 = ""
    for e in s:
        for ru_e in ru:
            if e == ru_e:
                s2 += ru_e
    
    return s2

Это не даёт оригинальной строке с некорректными символами пройти и попасть в файл через fd.write() и на сервер через socket.send().

→ Ссылка