UnicodeDecodeError: 'ascii' codec ne peut pas décoder les octets 0x92 en position 47: ordinal pas in range(128)

Je suis en train d'écrire des données dans un StringIO objet à l'aide de Python et puis, finalement, charger ces données dans une base de données postgres à l'aide de psycopg2 de copy_from() fonction.

D'abord quand j'ai fait cela, la copy_from() a été de lancer une erreur: ERREUR: invalid séquence d'octets pour l'encodage "UTF-8": 0xc92 j'ai Donc suivi cette question.

J'ai compris que ma base de données Postgres a l'encodage UTF8.

Le fichier/StringIO objet que je suis en train d'écrire mes données montre son encodage comme suit:
setgid Non-ISO ASCII étendu texte en anglais, avec des lignes très longues, avec CRLF ligne terminateurs

J'ai essayé d'encoder toutes les chaînes que je suis en train d'écrire le fichier intermédiaire/StringIO objet en format UTF8. Pour ce faire utilisé .coder(encoding='UTF-8',erreurs= "stricte")) pour chaque chaîne.

C'est l'erreur que j'ai maintenant:
UnicodeDecodeError: 'ascii' codec ne peut pas décoder les octets 0x92 en position 47: ordinal pas in range(128)

Ça veut dire quoi? Comment puis-je résoudre ce problème?

EDIT:
J'utilise Python 2.7
Certaines pièces de mon code:

J'ai lu à partir d'une base de données MySQL qui contient des données codées en UTF-8 par MySQL Workbench.
C'est à quelques lignes de code pour l'écriture de mes données (obtenue à partir de bases de données MySQL) pour StringIO objet:

# 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   

C'est le code qui écrit à la base de données Postgres de mon StringIO objet table_data:

cursor = db_connection.cursor()
cursor.copy_from(table_data, <postgres_table_name>)
  • Afficher votre code svp
  • Qui MySQL wrapper utilisez-vous?
  • Aussi, au lieu de montrer "certaines pièces de mon code", créer un un minimum, de manière complète, vérifiable exemple et de la poster ici.
  • Je suis à l'aide de MySQLdb que le paquet python pour récupérer les données de MySQL
  • Pendant ce temps, après vos mises à jour et les réponses, il n'y a pas encore de MCVE, et d'autres informations critiques n'est visible que dans les commentaires, ce qui signifie que toute personne à la recherche parce qu'ils veulent aider les gens comme vous ou parce qu'ils ont un problème similaire de ne pas le voir.
  • Je vais essayer d'ajouter un peu plus de code. Je ne peux pas donner beaucoup plus de code car pour des raisons de sécurité.
  • Lire le lié de l'aide. Personne ne veut de votre code réel, ils veulent un minimum, de manière complète, vérifiable exemple qui illustre le problème.

InformationsquelleAutor user3422637 | 2014-10-28