2013-12-04 2 views
3

У меня возникла проблема: сначала я сделал api, который принимает запрос на отправку,
затем отвечает на результат JSON.Python возвращает строку json

Данные запроса на отправку были закодированы, я принял данные о постом и получил данные
правильно, затем я отвечу новыми данными в формате JSON.

Но когда я вернул JSON, я обнаружил, что строка является unicode-форматом, например.

{ 
    'a':'\u00e3\u0080' 
} 

, но я хочу, чтобы получить формат, как это:

{ 
    'a':"ã" 
} 

Я хочу, чтобы этот формат, потому что я нашел, что этот формат Юникод не работает хорошо в IE8.

Да, IE8.

Что я могу сделать для этой проблемы? Спасибо!

+0

Пример кода? Строка кодирования Python? – crazyzubr

+0

Что означает «не работает в IE8»? Первый результат является приемлемым, если это правильное значение. –

+0

в IE8, через я декодирую свою строку, но она по-прежнему будет отображаться как формат unicode, декодирование не работает –

ответ

3

Если вы используете стандартную библиотеку json модуль, указав ensure_ascii=False, дайте вам то, что вы хотите.

Например:

>>> print json.dumps({'a': u'ã'}) 
{"a": "\u00e3"} 
>>> print json.dumps({'a': u'ã'}, ensure_ascii=False) 
{"a": "ã"} 

По словам json.dump documentation:

Если ensure_ascii является True (по умолчанию), все символы не-ASCII в выходе экранируются \ ихххх последовательности , и результатом является экземпляр str , состоящий только из символов ASCII. Если security_ascii - False, некоторые фрагменты, записанные в fp, могут быть экземплярами Unicode. Этот обычно происходит потому, что вход содержит строки Unicode или используется параметр кодирования . ...


BTW, что вы имеете в виду "формат Юникод не работает хорошо в IE8,"?

+0

Фактически, до сих пор мой ответ хорошо работает у всех исследователей, но IE8. –

+0

спасибо за вашу помощь, PS, почему значение по умолчанию secure_ascii True, я думаю, что это должно быть False. –

+0

@matthewxiang, я не знаю, почему «True» является значением по умолчанию. – falsetru

Смежные вопросы