c--: Zeichencode in Zeichen konvertieren / Sonderzeichen in Form

Beitrag lesen

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;  
}