mb_detect_encoding erkennt ASCII als UTF-8?

Ich versuche, importierte IPTC-Metadaten automatisch von Bildern in UTF-8 zu konvertieren, um sie in einer Datenbank zu speichern, die auf PHP basiertmb_ funktionen.

Derzeit sieht es so aus:

$val = mb_convert_encoding($val, 'UTF-8', mb_detect_encoding($val));

Wenn jedochmb_detect_encoding() Wird eine ASCII-Zeichenfolge geliefert (Sonderzeichen in den Latin1-Feldern von 192-255), wird diese als UTF-8 erkannt. Daher werden beim folgenden Versuch, alles in das richtige UTF-8 zu konvertieren, alle Sonderzeichen entfernt.

Ich habe versucht, meine eigene Methode zu schreiben, indem ich nach Latin1-Werten gesucht habe, und wenn keine auftraten, würde ich mit dem Vermieten fortfahrenmb_detect_encoding entscheide was es ist. Aber ich habe auf halbem Weg angehalten, als mir klar wurde, dass ich nicht sicher sein kann, dass andere Codierungen nicht dieselben Bytewerte für andere Dinge verwenden.

Gibt es eine Möglichkeit, ASCII richtig zu erkennen, auf das eingespeist werden soll?mb_convert_encoding als Quellcodierung?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage