2017-10-19 6 views
0

J'ai utilisé un programme pour traiter les données de ticks. Récemment, il a cessé de fonctionner et s'est écrasé dès qu'il a commencé à traiter le fichier. Il semble que quelque chose a changé avec la façon dont le fournisseur rend les données.Python ne peut pas décoder un jeu de caractères

Alors disons que je lance simplement:

with open("N:\\2017\\2017-09-28 Daily.CAP") as f: 
    i = 0 
    while True: 
     c = f.read(1) 

Je reçois cette erreur:

Traceback (most recent call last): 
    File "C:/Users/b.karjoo/Documents/PycharmProjects/untitled1/test.py", line 4, in <module> 
    c = f.read(1) 
    File "C:\Users\b.karjoo\py3_virt_env\lib\encodings\cp1252.py", line 23, in decode 
    return codecs.charmap_decode(input,self.errors,decoding_table)[0] 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 1799: character maps to <undefined> 

Toutes les suggestions?

Répondre

1

J'espère que cela résoudra le problème

with open(filename, encoding="cp437") as file: 

Mais si votre type de codage de fichier est pas CP437 et quelque chose d'autre à part cela et si vous utilisez notepad ++ pour afficher votre fichier, vous pouvez vérifier son encodage de type en cliquant sur

Encoding, which will show the type of encoding.

Si votre texte à l'aide sublime aller à

View -> Show Console

Type into field at bottom view.encoding() and it will give you the encoding type.

+0

Je n'ai pas pu ouvrir le fichier avec np ++ car il est dit que 20gb est trop grand. utf8 donne la même erreur. J'ai donc commencé à passer en revue toutes les options d'encodage une par une. Finalement j'ai recouru à cp437 et je ne reçois pas l'erreur. Je ne sais pas si l'encodage est en fait cp437, mais cela fonctionne. – bkarj

+0

donc vous avez fait encoding = "cp437" est-ce? –

+0

oui c'est exactement ce que j'ai fait – bkarj