escape() ist deprecated und sollte nicht mehr genutzt werden. ( -> MDC)
Okay, danke, Frage beantwortet.
Ich habe die Sache angepasst, escape() verwende ich nicht mehr. Auch habe ich utf8_decode() aus dem PHP-Script herausgenommen, sodass jetzt UTF-codierte Zeichen auch als solche in die Datei gespeichert werden. Funktioniert soweit auch prima.
Ich habe jetzt ein ähnliches Problem: Die Übertragung der Daten vom Server zum Client.
Das PHP-Script enthält zur Sicherheit diese Zeile:
header('Content-Type: text/plain; charset=utf-8');
Die Webseite (die die JavaScripts enthält), wird über PHP generiert und enthält diese Zeile:
header("Content-Type: text/html; charset=utf-8");
(Darf/muss man eigentlich zwischen utf-8 und dem letzten Anführungszeichen noch mal ein Semikolon setzen?)
Die Daten, die zum Client übertragen werden sollen, werden vom PHP-Script also mit print ausgegeben und vom Client empfangen (SendData()).
Unmittelbar vor der Ausgabe der Daten über print lasse ich diese mit utf8_encode() UTF-codieren - wenn ich das nicht mache, werden aus Umlauten Fragezeichen (�).
Und weil's gerade so viel Spaß macht, wollte ich hier - statt utf8_encode() zu verwenden, meinen Verschlüsselungsumweg probieren. Also mit meiner PHP-Funktion encode2() jedes Zeichen in Zeichencode ausdrücken, getrennt durch Punkte und beim Client mit der JavaScript-Funktion decode2() wieder den ursprünglichen String daraus machen.
Dabei will mir das PHP-Script folgendes mitteilen:
<br />
<b>Warning</b>: unpack() [<a href='function.unpack'>function.unpack</a>]: Type N: not enough input, need 4, have 0 in <b>/www/htdocs/...</b> on line <b>222</b><br />
<br />
<b>Warning</b>: unpack() [<a href='function.unpack'>function.unpack</a>]: Type N: not enough input, need 4, have 0 in <b>/www/htdocs/...</b> on line <b>222</b><br />
Darunter erscheint dennoch der scheinbar problemlos verschlüsselte (Zeichencodes durch Punkte getrennt) Output.
Was ist hier los?
Zeile 222 ist in der Funktion mb_ord() diejenige, die mit $result beginnt.
Für diese Funktion, siehe erstes Posting im Thread.
Hier die PHP-Verschlüsselungsfunktion:
function encode2($input)
{
$buf = "";
for ($i = 0, $size = mb_strlen($input); $i < $size; $i++)
{
if ($buf != "") $buf .= ".";
$buf .= mb_ord($input[$i]);
}
return $buf;
}