UnicodeDecodeError 'utf-8' codec can't decode byte 0xd2 in position 0: invalid continuation byte
У меня есть страница, на которую пользователь загружает csv-файлы.
Если я отправляю файл в кодировке utf-8, то всё работает как нужно, но если я выбираю файл в любой другой кодировке(например windows-1251), то выдает 'utf-8' codec can't decode byte 0xd2 in position 0: invalid continuation byte
. Хотя я вообще использую encoding='cp1251'
(русский).
Что нужно добавить\исправить, чтобы поддерживались файлы с любой кодировкой, а не только utf-8?
View post метод:
def post(self, request):
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
file = form.cleaned_data['file']
process_csv_file(file)
return render(request, 'add-by-file.html', {'form': form})
Где форма UploadFileForm
просто:
class UploadFileForm(forms.Form):
file = forms.FileField()
А process_csv_file
:
def process_csv_file(file):
df_all = pd.read_csv(file, delimiter=',', encoding='cp1251')
# proccessing df
Пример содержимого файла:
name,email,phone
Тест1,mail1@mail.com,81111111111
Тест2,mail2@mail.com,82222222222
Часть Traceback:
Traceback (most recent call last):
File "pandas\_libs\parsers.pyx", line 1073, in pandas._libs.parsers.TextReader._convert_tokens
File "pandas\_libs\parsers.pyx", line 1204, in pandas._libs.parsers.TextReader._convert_with_dtype
File "pandas\_libs\parsers.pyx", line 1217, in pandas._libs.parsers.TextReader._string_convert
File "pandas\_libs\parsers.pyx", line 1396, in pandas._libs.parsers._string_box_utf8
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 0: invalid continuation byte