Если ошибка возникает только во время вывода на печать, то проблема может быть в печати Юникодных строк в консоли. repr() может вернуть ascii представление для строки, чтобы помочь отладить проблему:
import json
from contextlib import closing
from urllib2 import urlopen
url = "http://..."
with closing(urlopen(url)) as r:
data = json.load(r)
print repr(data['msg'])
print data['msg']
Если ошибка возникает только на втором print, то можно установить переменную окружения PYTHONIOENCODING в кодировку, которая понимает все символы в data['msg'], например, utf-8 и перенаправить вывод в файл, если кодировка в консоли не utf-8. Как из Python вывести на Windows-консоль строку в Юникоде? На Unix это проще, достаточно использовать utf-8 локаль, например, C.UTF-8 или ru_RU.utf8.
urllib2...read()возвращает именно то, что нужно? – etki Sep 04 '14 at 23:17print json.dumps(urllib2.urlopen..выглядит неправильно. Что происходит, если попробовать:print(urllib2.urlopen..? Что печатает:print repr(data['msg'])? – jfs Sep 10 '14 at 20:14