Вы уже преобразовали это имя в str
.
Линия
self.name_list.append(str(name, 'utf-8'))
преобразует имя в строку и сохраняет его в списке.
Тогда
for name in self.name_list:
проходит по этим именам, и в конце цикла for
значение name
является окончательным преобразованным именем в self.name_list
.
Итак, когда вы делаете
strftime("%Y-%m-%d %H:%M:%S", gmtime())+" "+str(name, 'utf-8')+ " is connected")
Используется это имя, а не необработанное, возвращаемое name = c.recv(1024)
Простым решением является использование другого имени переменной в цикле for
, который обрабатывает self.name_list
.