Dateiinhalt in UTF-8 ist nicht gleich UTF-8?
Hi Linux und PHP Gurus,
ich habe ein Problem mit dem Zeichensatz *in* einer Datei und komme nicht weiter:
Eine Datei "language.php" enthält Übersetzungen in allen möglichen Sprachen - Text UTF-8. Sie liegt auf einem SuSE 11 Server (Dateisystem XFS) und funktionierte dort einwandfrei und lässt sich dort auch sauber betrachten (less), inkl. Russisch, Dänisch, Polnisch etc.
Diese Datei kopierte ich auf einen Ubuntu 14.04 Server (Dateisystem EXT4) und verhält sich völlig anders:
Mit "(z.B. iconv -f UTF-8 -t ISO-8895-1 ...)" komme ich zu keinem Ergebnis, das stolpert immer über unbekannte Zeichen und bricht ab. Und das, was es bis dahin produziert hat, ist auch nicht wirklich brauchbar. Also ist eine Konvertierung zwecklos.
Die Datei ist bis aufs Byte gleich gross auf beiden Seiten, hat Unix Umbrüche, ... alles passt soweit. Kopiert habe ich per FTP als Plain Text und und testweise auch als .gz, alles umsonst bis hier.
Wo muss ich nach Ursache suchen?
Dateisystem? Locale? PHP oder Apache Konfiguration?
Bin für jede solide Idee dankbar.
ich habe ein Problem mit dem Zeichensatz *in* einer Datei und komme nicht weiter:
Eine Datei "language.php" enthält Übersetzungen in allen möglichen Sprachen - Text UTF-8. Sie liegt auf einem SuSE 11 Server (Dateisystem XFS) und funktionierte dort einwandfrei und lässt sich dort auch sauber betrachten (less), inkl. Russisch, Dänisch, Polnisch etc.
Diese Datei kopierte ich auf einen Ubuntu 14.04 Server (Dateisystem EXT4) und verhält sich völlig anders:
- less zeigt dort, wo es kritisch ist, nur Zeichensalat / Platzhalter an.
- die zugehörige PHP Prozedur (json_encode), die mit Hilfe dieser Datei eine Ausgabe produzieren soll, endet mit der Warnung (im error_log) "PHP Warning: json_encode(): Invalid UTF-8 sequence in argument in /var/www/vhosts/some.host.com/httpdocs/typo3conf/ext/geo_search/all_results.php on line 235"
Mit "(z.B. iconv -f UTF-8 -t ISO-8895-1 ...)" komme ich zu keinem Ergebnis, das stolpert immer über unbekannte Zeichen und bricht ab. Und das, was es bis dahin produziert hat, ist auch nicht wirklich brauchbar. Also ist eine Konvertierung zwecklos.
Die Datei ist bis aufs Byte gleich gross auf beiden Seiten, hat Unix Umbrüche, ... alles passt soweit. Kopiert habe ich per FTP als Plain Text und und testweise auch als .gz, alles umsonst bis hier.
Wo muss ich nach Ursache suchen?
Dateisystem? Locale? PHP oder Apache Konfiguration?
Bin für jede solide Idee dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 278585
Url: https://administrator.de/contentid/278585
Ausgedruckt am: 05.11.2024 um 19:11 Uhr
6 Kommentare
Neuester Kommentar
Moin,
was sagt ein
in einer Shell der Useraccounts ?
Und in der httpd.conf des Apache steht dort ein:
?
Gruß grexit
was sagt ein
echo $LANG
Und in der httpd.conf des Apache steht dort ein:
AddDefaultCharset utf-8
Gruß grexit
Zitat von @lexa-lexa:
In einem Ordner liegen PDF-Dateien mit kyrillischen (Russisch) Zeichen im Dateinamen, welche auf Server1 korrekt angezeigt werden
(ls -al) und auf dem Problem-Server2 mit Zeichensalat.
Könnte das einen Zusammenhang haben und wie kann man das korrigieren?
In einem Ordner liegen PDF-Dateien mit kyrillischen (Russisch) Zeichen im Dateinamen, welche auf Server1 korrekt angezeigt werden
(ls -al) und auf dem Problem-Server2 mit Zeichensalat.
Könnte das einen Zusammenhang haben und wie kann man das korrigieren?
Dann soltest Du mal die verschiedenen Umgebungsvariablen, die die Zeichencodierung betreffen durchschauen, z.B. LANG.
lks