Konwersja z inta na stringa zwraca błąd: UnicodeEncodeError: 'ascii' codec can't encode character u'\ufeff' in position 0: ordinal not in range(128)

0

Hejka, mam problem z konwersją danych. W programie używam sql lite i w bazie mam jedną kolumnę z typem danych int. Po pobraniu danych z bazy i próbie ich zapisania ta kolumna powoduje błąd: UnicodeEncodeError: 'ascii' codec can't encode character u'\ufeff' in position 0: ordinal not in range(128). Spróbowałem przekonwertować tą kolumnę na string, ale funkcja str() nie pomogła.

Oto fragment kodu:

def DataPrepare():
    db = SQL.DataStorage()
    db.exec_query("select Type, Year, avg(Value) from Export group by Type, Year")
    list = db.export

    #db.exec_query("delete from Export")
    for row in list:
        db.exec_query("insert into Export values ('{}', '{}', '{}')".format(row[0], row[1], row[2]))

I praktycznie na tym utknąłem. Jak ten problem można rozwiązać? (Problem powoduje row[1])

1

To oznacza że z bazy przychodzą ci jakieś bajty i teraz trzeba je jakoś zinterpretować. Taki błąd 'ascii' codec can't encode character u'\ufeff' oznacza że spróbowałeś zrobić ascii-stringa z tych bajtów, ale to nie jest poprawna sekwencja bajtów. Pytanie brzmi: co to są za wartości które są zwracane? To jest jakiś int? Jakby uznać te bajty za big endian 2 bajtowego inta to masz 65279 (bo hex(65279) == 0xfeff)

1 użytkowników online, w tym zalogowanych: 0, gości: 1