2016-05-09 10 views
0

Ich habe ein Diktat, das einige Unicode-Zeichenfolgen (neben anderen Objekten) enthält. Ich möchte dieses Diktat als JSON-Datei speichern und dann den Inhalt über AJAX anzeigen.Übergabe der Unicode-Zeichenfolge von Python-Dict zu JSON

Wenn final_res die dict ist, dass ich dies in der Regel tun:

json.dumps(final_res, ensure_ascii=True) 

Im Ergebnis sehe ich Strings wie:

"l\\u00a0m\\u00fcdale" 

Ich stelle mir diese Unicode-codierte Zeichen sind. Aber wenn ich versuche, sie in Javascript anzuzeigen, werden diese mit den Schrägstrichen anstelle des kodierten Unicode-Buchstabens gedruckt.

Gibt es etwas, das ich in Javascript falsch mache, um diese richtig anzuzeigen? Oder soll ich diese in Python in ASCII decodieren, bevor ich sie nach JSON ausspiele?

UPDATE:

Auf der Grundlage der Diskussion in den Kommentaren unten mit @spectra, erkannte ich, dass json.dumps nicht doppelte Schrägstriche werden ausgibt. Wenn ich dies im Browser analysiere, druckt es dies als ein wörtlicher einzelner Schrägstrich.

Ich versuche, einen Weg zu finden, um dies mit dem json Modul zu beheben, nicht sicher, warum es passiert.

+0

Was verwenden Sie, um das Ergebnis an den Browser zu senden? – spectras

+0

Ich sehe die Zeichenkette gedruckt als '" l \\ u00a0m \ u00fcdale "' – user1496984

+0

Warum verwenden Sie 'ensure_ascii = True'? Und wie analysieren Sie den JSON auf der Javascript-Seite? Wenn Sie nur die rohe JSON-Zeichenfolge anzeigen, erhalten Sie natürlich Unicode-Escapes. Wenn Sie jedoch JSON analysieren und verwenden, sollten die Escapes vom Parser in Unicode umgewandelt werden. – user2357112

Antwort

0

Die Lösung für mich war das Ergebnis von in der Datenbank mit der "single-slashed" Version zu speichern. Ich tat es, indem ich print auf dem Ergebnis von anrief und dann dieses in die Datenbank kopiere.

+1

Wenn Sie es nur im Interpreter visualisiert haben, denken Sie daran, den Ausdruck zu verwenden. Andernfalls entkommt der Interpreter Strings. Dies liegt daran, dass die Zeichenkette selbst nicht angezeigt wird, sondern dass Sie etwas mit einem Objekt versehen, das Sie in Python kopieren und einfügen können, um es neu zu erstellen. – spectras

0

Sie können die JSON-Datei in UTF-8 statt entkam Charaters kodieren:

json.dumps(final_res,ensure_ascii=False).encode('utf8') 

Zum Beispiel

print json.dumps({'name':u'l\u00a0m\u00fcdale'},ensure_ascii=False).encode('utf8') 
# {"name": "l müdale"} 

dann in der Client-Seite AJAX Code die Codierung 'UTF-8': How to set encoding in .getJSON JQuery

$.ajax({ contentType: "application/json; charset=utf-8", ... }) 
Verwandte Themen