Ошибка Python - проблемы Unicode / Ascii со значением, извлеченным из базы данных MySql - PullRequest
1 голос
/ 27 апреля 2020

Об этом спрашивали миллион раз, но все, что я пробовал, не сработало, и все из-за немного разных проблем. Я схожу с ума по этому поводу!

У меня есть скрипт Python, который извлекает данные из базы данных MySql - все работает хорошо.

Информация о базе данных:

  • Я считаю, что информация в базе данных верна. Я пытаюсь разобрать несколько записей в текстовые документы - вот почему меня не слишком беспокоит точность - даже если удаляются плохие символы - это нормально.
  • Кодировка базы данных - UTF-8 и поле, с которым я работаю, это VarChar
  • Я использую mysql .connector python модуль для подключения

Однако я получаю ошибки, и я понял, что это потому, что значений с Юникодом, таких как:

Screenshot of entry in database

Значение этого элемента "DOMAINoardroom".

Я пробовал:

    text = order[11].encode().decode("utf-8")
    text = order[11].encode("ascii", errors="ignore").decode()
    text = str(order[11].encode("utf8", errors="ignore"))

Последний работает, однако выводит его как b'DOMAIN \ x08oardroom ', так как это байты

Я могу получить его в принять текст печатным шрифтом (текст) на экран. Однако, когда я пытаюсь вывести его в текстовый документ (используя модуль docx), он выдает ошибку:

table = document.add_table(rows=total_orders*2, cols=1)
row = table.rows[0].cells
row[0].text = row_text

ValueError: Все строки должны быть XML совместимы: Unicode или ASCII, без NULL-байтов или управляющие символы

Я не особо суетливый по поводу того, как он обрабатывает юникод, например, удаляет его при необходимости, но мне просто нужно его проанализировать без ошибок.

Любые мысли или советы здесь?

...