[gelöst] UTF-8 Problem in PHP CLI

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
exxecc
Beiträge: 30
Registriert: 24.07.2010 12:32:29
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] UTF-8 Problem in PHP CLI

Beitrag von exxecc » 27.08.2012 11:55:20

Hallo zusammen

Debian GNU/Linux 6.0
PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011 08:24:40)
TCPDF Version : 5.9.145
TCPDF benutzte Schriftart: "dejavusans" (truetype, besitzt alle UTF-8 Zeichen)

Kurze Einführung:
Wir haben über Apache/PHP eine Rechnungsstellung die dem User bei klick PDF's ausgibt - und egal was für Zeichen der Kunde eingegeben hat, die Zeichen werden korrekt in der PDF wiedergegeben.
Wir haben auch eine automatische Rechnungsstellung (selber Code, bloß via cronjob angeworfen), die dem Kunden die Rechnungen via Mails zusenden.

Die Daten werden aus einer MySQL Tabelle geladen welche den Zeichensatz utf8_unicode_ci handlet.
MySQL wird in der Webanwendung sowie beim CLI (Cronjob) Aufruf auf UTF-8 gesetzt.
In beiden php.ini's (apache, cli) ist 'default_charset = "UTF-8"'
Die debian locale ist "de_utf-8"

Problem:
In der Webversion werden wie gesagt alle Zeichen original wiedergegeben, in der Cronjob Version werden Strings mit utf8 zeichen einfach "verschluckt"...
Ich hab mit TCPDF sowie verschiedenen anderen Einstellungen herumgespielt und getestet aber bekomme es einfach cniht hin das in der CLI / Cronjob version alle UTF-8 Zeichen korrekt ausgegeben werden.. (äöü werden, wenn extra nochmal utf8_encode() genutzt wird, korrekt dargestellt, aber zB. das Türkische "i"-Zeichen ohne den i Punkt, wird mit einem "?" ersetzt)

Wie gesagt der Code in der Webanwendung vorliegt ist der selbe welcher bei der Cronjob Version ausgeführt wird.

Woran könnte die Inkompatibilität mit den Zeichen liegen?

Viele Grüße
Zuletzt geändert von exxecc am 28.08.2012 09:31:31, insgesamt 1-mal geändert.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: UTF-8 Problem in PHP CLI

Beitrag von rendegast » 27.08.2012 13:54:34

Einmal
PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011 08:24:40)
<->
Paket php5
squeeze (stable) (web): In HTML eingebettete, serverseitige Skriptsprache (Meta-Paket)
5.3.3-7+squeeze14 [security]: all
weiterhin "TCPDF Version : 5.9.145" (2012-01-28) mittlerweile als 5.9.180.

Der cron-Job wird wohl nicht mit der System-Locale arbeiten, sondern mit
LANG=C oder LANG=POSIX.
Wenn es daran liegt,
müßte ein händisches Ausführen des Job-Befehls oder -Skripts in einer "normalen" bash oder sh eine korrekte Ausgabe liefern.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

exxecc
Beiträge: 30
Registriert: 24.07.2010 12:32:29
Lizenz eigener Beiträge: MIT Lizenz

Re: UTF-8 Problem in PHP CLI

Beitrag von exxecc » 28.08.2012 09:31:19

Das Problem wurde gelöst... wieder was ganz dummes..
ich instanziere das MySQL query object, setzte UTF8, und beginne mit dem Script - wobei ab dem ersten query das MySQL Object nochmals neu instanziert wird - ohne UTF8 zu setzen -.-
gefailt..

Antworten