Я пытаюсь записать данные в объект StringIO с использованием Python, а затем в конечном итоге загрузить эти данные в базу данных postgres, используя psycopg2's copy_from().UnicodeDecodeError: кодек ascii не может декодировать байт 0x92 в позиции 47: порядковый номер не в диапазоне (128)
Сначала, когда я сделал это, copy_from() выкидывал ошибку: ERROR: неверная последовательность байтов для кодирования «UTF8»: 0xc92 Итак, я следовал this question.
Я понял, что в моей базе данных Postgres есть кодировка UTF8.
Файл/StringIO объект, который я пишу мои данные в показывает свою кодировку, следуя: setgid Non-ISO расширенной ASCII-английский текст, с очень длинными линиями, с CRLF терминаторов линии
Я пытался кодировать каждая строка, которую я пишу в файл промежуточного файла/StringIO в формате UTF8. Для этого используется .encode (encoding = 'UTF-8', errors = 'strict')) для каждой строки.
Это ошибка я получил в настоящее время: UnicodeDecodeError: «ASCII» кодек не может декодировать байт 0x92 в позиции 47: порядковый не в диапазоне (128)
Что это значит? Как это исправить?
EDIT: Я использую Python 2.7 Некоторые части моего кода:
я прочитал из базы данных MySQL, который имеет данные в кодировке UTF-8, как в MySQL Workbench. Это код несколько строк для записи своих данных (который получается из БД MySQL) для объекта StringIO:
# Populate the table_data variable with rows delimited by \n and columns delimited by \t
row_num=0
for row in cursor.fetchall() :
# Separate rows in a table by new line delimiter
if(row_num!=0):
table_data.write("\n")
col_num=0
for cell in row:
# Separate cells in a row by tab delimiter
if(col_num!=0):
table_data.write("\t")
table_data.write(cell.encode(encoding='UTF-8',errors='strict'))
col_num = col_num+1
row_num = row_num+1
Это код, который записывает в базу данных Postgres из моего StringIO объекта TABLE_DATA:
cursor = db_connection.cursor()
cursor.copy_from(table_data, <postgres_table_name>)
Показать свой код –
Какую оболочку MySQL вы используете? – abarnert
Кроме того, вместо того, чтобы показывать «некоторые фрагменты моего кода», создайте автономный [минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve) и опубликуйте его здесь. – abarnert