Ich arbeite an einem Skript, mit dem ich ein kleines Problem habe.array_map verursacht Probleme mit erweitertem ASCII für chr() (PHP)
Das Skript erwartet, dass Zeichenfolgen in Bytedaten an es übergeben werden. Als Beispiel habe ich die Zeichenfolge:
61,68,71,61,68,101,118,105,101,116,104
die = DG = Devieth erweist. Der folgende Code nimmt diese Zeile und übersetzt sie erfolgreich:
$sv_reportee = implode(array_map('chr', explode(',', $_GET['defendant'])));
Nun lassen Sie uns sagen, dass ich diese Zeichenfolge ändern 171 («) enthalten und 187 (»). Das Skript spuckt keine Warnungen aus, keine Notizen oder irgendetwas ... es weigert sich einfach, mehr Arbeit in Bezug auf das Arbeiten mit Variablen zu leisten. Es führt die anderen Funktionen durch genau, aber das Ausführen von print ($ sv_reportee) führt dazu, dass überhaupt nichts für diese Variable kommt.
Dies war meine Referenz für die obige Codezeile: PHP Get String Text From Bytes
nun von dem, was ich verstehe, sollte chr() in der Lage sein, 0-255 auf der ASCII-Tabelle zu behandeln. Recht? Oder gibt es einen anderen Weg, wie ich das tun könnte/könnte, der die obige Codezeile nicht beinhaltet?
Erwähnenswert, wegen einer Einschränkung in einem anderen Aspekt der Anwendung muss die Zeichenfolge in Byteform gesendet werden. Es gibt leider keine andere Möglichkeit - wir haben alle anderen möglichen Optionen ausgeschöpft.
Hallo, ASCII ist 0-128 alles mehr braucht Codierung ich glaube. Es gibt etwas wie "erweitertes ASCII" [hier] (http://www.theasciicode.com.ar/extended-ascii-code/one-half-ascii-code-171.html), aber die Ints passen nicht mit deins (171 == 1/2 statt Zitat). Jetzt entspricht Ihr Beispiel latin1 - https://en.wikipedia.org/wiki/ISO/IEC_8859-1. also würde ich versuchen, [this] (http://stackoverflow.com/a/16165685/3727050) UTF8 neu zu codieren ... – urban
@urban Danke für den Link - der die Zeichenkette mit utf8_encode() umgab, sowie den Header-Typ festlegen. – mywarthog