2011-01-09 6 views
5

Ich weiß nicht, was das Problem ist, aber wann immer ich den Brief anrufen - von $ _POST Funktion es stellt es in meinem fpdf als ... ± irgendeine Idee warum?Falsches Symbol in fpdf exportiert ... ñ als ± ..?

+0

Dies ist ein Zeichensatzproblem. Sie müssen mehr Details hinzufügen: Wo Ihre Daten herkommen (Datenbank? Form?), Wie es kodiert ist –

+0

Datenbankform .. aber die Leute schreiben - und es endet in fpdf als diese Symbole .. in der MySQL-Datenbank scheint es wie Ich will es – NORM

Antwort

5

Ihre Saite hat eine falsche Codierung zu liefern. Es ist UTF-8, aber ich glaube, Sie Latin-1 oder so brauchen ..

Sie können utf8_decode() auf die Saiten verwenden:

echo utf8_decode("ñ"); // prints ñ 
+0

hey thnx! Habe ich das Echo? .. wie unten, nach was? – NORM

+0

Sie müssen es verwenden, bevor Sie die Zeichenfolgen in Ihr PDF schreiben: '$ your_string = utf8_decode ($ your_string);'. Eigentlich direkt nach dem Lesen von $ _POST: '$ your_string = utf8_decode ($ _ POST ['your_string']);' – Floern

+0

das ist mein Beitrag: $ pdf-> Schreiben (0, "". $ Person ["CA"]); sollte ich das tun: $ pdf-> Write $ your_string = utf8_decode (0, "". $ person ["CA"]); ???? – NORM

1

Wir hatten das Problem einmal und mit

utf8_decode("foo bar"); 

das Problem gelöst (abhängig natürlich, wenn die Daten aus dem Benutzer comming sind, eine Datenbank, ...). Vergessen Sie nicht, die Datei an den Benutzer in UTF-8 als auch im Header

header("Content-type: application/pdf; charset=utf-8"); 
+0

setzen was in der Kopfzeile? – NORM

+0

@NORM siehe meine Bearbeitung bitte. – DrColossos

+0

thnx !!!!!!!!!!! – NORM

2

Die alternative Lösung mit Unicode zu erweitern FPDF würde (UTF- 8) Unterstützung. Es gibt einen Patch dafür: http://acko.net/node/56

+0

Thnx für die Antwort !! ..wie installiere ich es? – NORM

+0

@NORM: Wirklich: Ich habe keine Ahnung. Aber von dem, was ich gesammelt habe, verwenden Sie es einfach anstelle des normalen FPDF. Ändern Sie das Include und instanziieren Sie die 'neue UFPDF()' Klasse. – mario

+0

thnx !!!!!!!!!!! – NORM

2

Ich habe auch eine Menge Zeit damit verbracht, dies zu arbeiten und dachte, die folgende Erklärung könnte für andere hilfreich sein.

Keine Notwendigkeit, Ihre eigenen komplexen Funktionen zu schreiben, wenn das einzige Problem ein £/€ oder ähnliches Zeichen ist.

Hier ist, was ich verwendet habe (aus diesem Thread und andere auf dem Netz genommen): -

$pdf->SetY(220); // set the y co-ord before output // 
$monthlyRent = utf8_decode("£" . number_format($monthlyRent, 2)); // 2 dec places // 
// previously $monthlyRent is pulled from the MySql db as $array['_monthlyRent']; 
$pdf->Write(5,'Gross monthly rent: ' . $monthlyRent); // outputs £980 or whatever. // 

Arbeitet ein Genuss, aber erinnern sich die number_format($yourval, 2) in der gleichen Zeile wie die utf8_decode(); oder es zu tun Schrauben hoch!

Hoffe, das ist hilfreich für einige arme Grashalme, die wie ich, hat für ein paar Stunden gekämpft!