Arbeiten mit GD (imagettftext ()) und UTF-8-Zeichen

9

Nur für die Aufzeichnung - meine erste Frage hier, aber hoffentlich nicht meine letzte Eingabe in der Gemeinschaft. Aber deshalb bin ich nicht hier.

Ich entwickle gerade ein einfaches System, das ein Bild mit einem Text erzeugen muss. Alles lief gut, bis mir klar wurde, dass GD keine UTF-8-Zeichen wie

verarbeiten kann
  

á, è, ž, ä, ø, é

und so weiter.

Um Dinge zu klären - ich benutze imagettftext ()

Versuchen, mein Problem zu lösen Ich grub in Tiefen von Google und einige Lösungen wurden zurückgegeben, keiner von ihnen, leider, löste mein Problem vollständig. Zur Zeit benutze ich dieses Skript, das ich in diesem Thread gefunden habe - PHP Funktion imagettftext () und unicode

%Vor%

und es funktioniert gut für einige Zeichen, aber nicht alle von ihnen, zum Beispiel ein mit Umlaut wird nicht korrekt konvertiert.

Ich bin also nicht sicher, wo und wonach ich suchen soll, da ich die Benutzereingabe nicht vorhersagen kann. Um genauer zu sein, zieht das System Künstlernamen aus einem XML-Feed und verwendet die Daten für die Bilderzeugung (ich beabsichtige nicht, Hieroglyphen zu unterstützen).

Ich habe sichergestellt, dass die aus dem Feed gesammelten Daten tatsächlich UTF-8 sind, indem ich PHPs mb_detect_encoding () und ich habe sichergestellt, dass alle Zeichen, die momentan nicht korrekt angezeigt werden, in der Schriftartdatei enthalten sind, die ich dem imagettftext () füttere Funktion, indem Sie es mit Windows charmap Werkzeug überprüfen.

Hoffentlich kann ich meine Antwort hier finden und danke Ihnen für Ihre Hilfe im Voraus!

Bearbeiten

Zur Verdeutlichung - die Zeichen werden nicht korrekt angezeigt, oder genauer gesagt, werden sie durch fehlerhafte Zeichen ersetzt. Hier ist ein Screenshot -

sollte es "José González" lesen

Bearbeiten Sie No2

Wenn Sie die Funktion bin2hex () für Daten verwenden, die aus dem XML-Feed abgerufen wurden, wird dies zurückgegeben.

%Vor%

bearbeiten - behoben

Als ich meine Nachforschungen fortsetzte, fand ich eine Antwort auf mein Problem, dieses Stück Code hat es geschafft!

%Vor%

Jetzt werden alle Zeichen, die mich beunruhigt haben, richtig angezeigt!

    
Pankucins 26.02.2012, 23:29
quelle

2 Antworten

4

Als ich meine Nachforschungen fortsetzte, fand ich eine Antwort auf mein Problem, dieses Stück Code hat es geschafft!

%Vor%

Jetzt werden alle Charaktere (und alle neuen, die ich gesehen habe), die mich beunruhigt haben, korrekt angezeigt!

    
Pankucins 02.03.2012, 09:02
quelle
0

Stellen Sie zuerst sicher, dass Ihre IDE die Datei nicht in einer anderen Kodierung als UTF8 speichert. Zum Beispiel hat die neue Intellij IDEA 9 UTF-8 in WINDOWS-1250 auf Windows-Plattform geändert. Wenn Sie das nicht bemerken und Sie konstante Zeichenfolgen zum Testen verwenden, ist es ziemlich verrückt zu debuggen.

    
lukyer 02.08.2015 20:32
quelle