2016-07-21 15 views
0

guten Nachmittag, ich habe ein Skript in Python, um es von PHP zu starten. Das Skript macht eine Anfrage an eine Datenbank und gibt ein JSON-Objekt:Lost Akzent Zeichen PHP

[{"ESC_DEF": 0, "ESC_EJE": 2017, "ESC_FEC_PRE": null, "ESC_USU_BAJA": null, "ESC_NOM": "prueba fran 3", "ESC_SIT": "ABIERTO", "ESC_USU_ALTA": "hep68", "RONDA_ID": 1, "ESC_ORI": "Gestión Económica", "ESC_SIT2": "BORRADOR", "ESC_FEC_FRCG": null, "ESC_TPO": "PRESUPUESTO", "ESC_ORG": "1214", "ESC_FEC_ALTA": "19/07/2016 10:39:20", "ESC_FEC_FIR": null, "CRE": 0.00, "ID_PTOEGE": null, "ESC_FEC_BAJA": null, "ESC_COD_BAJA": null, "ID": 3637, "EST_ORG_NOM": null}]

Der Befehl, den ich verwenden ist:

son_output = json.dumps((my_query), default=custom_json, ensure_ascii=False)` 

In PHP Ich betreibe und das Ergebnis holen wie folgt:

exec('python3 sqlserver.py'. " ".$parametro, $output, $ret_code); 
$json = implode($output); 
echo utf8_encode(stripslashes($json)); 

Aber der Inhalt wird wie folgt angezeigt:

"ESC_ORI": "Gestixc3xb3n Econxc3xb3mica"

Betonungszeichen werden nicht korrekt angezeigt.

Entschuldigung, wenn ich mich nicht gut in Englisch ausgedrückt habe.

+0

Haben Sie überprüft, bei welchem ​​Schritt das Problem auftritt? –

+0

Wenn ich das Skript vom Terminal ausführen, ist das Ergebnis gewünscht, aber ist die Ausgabe von PHP, die nicht das gleiche Ergebnis zeigt –

Antwort

0

"\ xc3 \ xb3" ist "ó". Beim Entfernen der Schrägstriche mit stripslashes ($ str) verlieren Sie auch die Unicode-Escapes und erhalten daher nur die seltsamen Zeichen anstelle der kleinen lateinischen Zeichen, nach denen Sie suchen. Nicht gut in PHP, aber versuchen Sie, ohne diese Funktion zu laufen.

+0

Danke für Ihre Antwort, wenn ich wie folgt ausführen: $ json = implode ($ output); Echo ($ json); erhalte ich: Gesti \ xc3 \ xb3n Econ \ xc3 \ xb3mica Wenn ich die folgende Zeile entfernen, PHP nichts zeigt: json_output = json_output.encode ('utf-8') –

+0

, wenn ich laufen als folgt: json_output = json_output.encode ('utf8'), ich bekomme ESC_ORI ":" Gesti \\ u00f3n Econ \\ u00f3mica –

+0

Ok, mit etwas mehr lesen, werde ich sagen, dass ich falsch in diesem einen war. Codecs holt mich immer. Denke, deine Lösung wäre, stattdessen die Funktion http://php.net/manual/en/function.utf8-decode.php zu verwenden, da Python es bereits als utf-8 hat. Ich schätze, wir wollen es nicht verschlüsseln Noch einmal. – Sindri