2013-06-28 5 views
0

Я пытаюсь сделать «конвертер» сценарий в jvectormap в работу, но я получаю следующее сообщение об ошибке,json.dumps и UnicodeDecodeError

ultural$ python ../../../../jvectormap/converter/converter.py --width 1000 --country_name_index 1 --country_code_index 30 --where "'ISO = DEU'" --projection aea --name datag_germany --language en_US ne_10m_admin_1_states_provinces_shp.shp here.js 
ERROR 1: Not enough tokens to complete expression. 
Traceback (most recent call last): 
    File "../../../../jvectormap/converter/converter.py", line 294, in <module> 
    converter.convert(args['output_file']) 
    File "../../../../jvectormap/converter/converter.py", line 182, in convert 
    open(outputFile, 'w').write(self.map.getJSCode()) 
    File "../../../../jvectormap/converter/converter.py", line 30, in getJSCode 
    return "jQuery.fn.vectorMap('addMap', '"+self.name+"_"+self.projection['type']+"_"+self.language+"',"+json.dumps(map)+');' 
    File "/usr/lib/python2.6/json/__init__.py", line 230, in dumps 
    return _default_encoder.encode(obj) 
    File "/usr/lib/python2.6/json/encoder.py", line 367, in encode 
    chunks = list(self.iterencode(o)) 
    File "/usr/lib/python2.6/json/encoder.py", line 309, in _iterencode 
    for chunk in self._iterencode_dict(o, markers): 
    File "/usr/lib/python2.6/json/encoder.py", line 275, in _iterencode_dict 
    for chunk in self._iterencode(value, markers): 
    File "/usr/lib/python2.6/json/encoder.py", line 309, in _iterencode 
    for chunk in self._iterencode_dict(o, markers): 
    File "/usr/lib/python2.6/json/encoder.py", line 273, in _iterencode_dict 
    yield encoder(key) 
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe1 in position 4: unexpected end of data 

мне было интересно, как я должен иметь дело с json.dumps и кодировка, которая, по-видимому, является главной проблемой в этом случае. Я использую python 2.6;

ответ

2

Я решен вопрос с simmilar JSon отвалов и кодирования путем преобразования строк, содержащих «экзотические» символы в utf8, таким образом, обработка юникода объектов .. Это работает для меня: .decode('utf8')

Это должно помочь: http://www.joelonsoftware.com/articles/Unicode.html