Przetwarzam plik UTF-8 w Pythonie i użyłem simplejson do załadowania go do słownika. Jednak Dostaję UnicodeDecodeError gdy próbuję włączyć jedną z wartości słownikowych na ciąg znaków:Python: dlaczego funkcja str() w przypadku niektórych tekstów z pliku UTF-8 podaje kod UnicodeDecodeError?
f = open('my_json.json', 'r')
master_dictionary = json.load(f)
#some json wrangling, then it fails on this line...
mysql_string += " ('" + str(v_dict['code'])
Traceback (most recent call last):
File "my_file.py", line 25, in <module>
str(v_dict['code']) + "'), "
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf4' in position 35: ordinal not in range(128)
Dlaczego Python nawet przy użyciu ASCII? Myślałem, że domyślnie używa UTF-8, a dane wejściowe pochodzą z pliku UTF-8.
$ file my_json.json
my_json.json: UTF-8 Unicode English text
Na czym polega problem?
Dzięki! Aby zakodować wszystkie elementy w słowniku, zrobiłem: dla k, v w v_dict.iteritems(): if v_dict [k]: v_dict [k] = v_dict [k] .encode ('utf-8') – AP257