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

Beitrag lesen

Nachtrag:

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 (�).

Die von mir genannten Umlaute, die erst durch utf8_encode() richtig dargestellt werden, werden mit include aus einer weiteren PHP-Datei geholt.
Alle Variablen in der "eigentlichen" PHP-Datei, die Sonderzeichen enthalten, werden durch den Gebrauch von utf8_encode() utf-codiert angezeigt.

Ausführlicher:
Die PHP-Datei, die Daten an den Client (JavaScript) übertragen soll, nenne ich 1. PHP-Datei. Bevor die Daten mit print gesendet werden, werden sie mit utf8_encode() ins UTF-Format konvertiert. Dabei handelt es sich zum Schluss um 1 Variable, die den gesamten Output enthält und eben mit print ausgegeben wird.
Über include() wird eine 2. PHP-Datei eingebunden, in der Variablen definiert werden, die über die 1. PHP-Datei auch im Output landen. Diese enthalten auch Sonderzeichen, wie z.B. ä, was hinterher auf der Seite auch als ä dargestellt wird.
Es gibt aber auch Variablen in der 1. PHP-Datei, die Sonderzeichen enthalten, die im Output landen. Diese Sonderzeichen werden auf der Webseite UTF-codiert angezeigt, also zum Beispiel ä statt ä.
Testweise habe ich in der 1. PHP-Datei eine Variable mit einem Sonderzeichen definiert:
$tmp = "ä";
Ich habe diese Variable $tmp dann dem Ouput hinzugefügt (welcher vor dem print durch utf8_encode() läuft).
Es wird ä angezeigt.
Wenn ich diese Zeile aus der 1. PHP-Datei herausnehme und stattdessen mit Copy & Paste in die 2. PHP-Datei einfüge (die 2. PHP-Datei wird mit include() in die 1. PHP-Datei eingebunden) und nichts an der Stelle (in der 1. PHP-Datei) ändere, wo $tmp dem Output angehängt wird, dann wird das gewünschte ä angezeigt. Der Output läuft vor dem print immer noch durch utf8_encode().

Wie kann es sein, dass ein und der selbe String nur richtig ausgegeben wird, wenn er in einer anderen PHP-Datei steht, die included wird - bzw. wie kann es sein, dass ich die Variablen aus der includeten Datei durch utf8_encode() laufen lassen muss, andere aber nicht?

Ich habe das Problem scheinbar dadurch gelöst, dass ich die Variablen, die ich in der 1. PHP-Datei nutze, die aus der 2. (includeten) PHP-Datei stammen, bevor sie verarbeitet werden mit utf8_encode() ins UTF-Format konvertiere. Dafür lasse ich den Output in der 1. PHP-Datei vor dem print *nicht* mehr durch utf8_encode() laufen.
Mit Variablen, die in der 1. PHP-Datei erstellt werden, ist utf8_encode() nicht nötig(?).