При удалении введенных ранее русских символов в input() пояляется аномальное поведение в методах socket.send() и fd.read()
Имеется сервер, который распределяет сообщения от клиентов. chat gpt это на моём сервере.
При отправке в тот же chat gpt строки с русскими символами возникает ситуация когда строка успешна и без ошибок достигает моего сервера и бот генерирует корректный ответ и отдаёт его серверу также без ошибок и каких-либо деформаций текста, но до клиента ответ в виде строки с ответом попросту не доходит и клиент зависает. Это происходит только в том, и только в том, случае если хотя бы один символ кириллицы в поле input на стороне клиента был удален.
Аналогичная проблема возникает с записью в файл и последующим считывании русскоязычной строки в которой был удален хоть один символ кирилицы, но тут уже возникает ошибка utf-8 или попросту считывание с файла выдает строку с неотображаемыми символами и ранее удаленными символами кирилицы.
Я думал решить эту проблему просто тем что буду отслеживать удаленные символы, но метод input() в python не даёт такой возможности, а выходная строка при выводе с помощью print() не выводит деформированной строки с неивестными символами и никакой len() не видит удаленные символы и даёт длину строки без учета удаленных символов или неизвестных символов.
Прошу попросту подсказать какие возможные решения могут быть?
Ответы (1 шт):
Решением стало выходную строку 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().