2012-12-10 3 views
7

Ich hole E-Mails von einem Mail-Server und konvertiere die Nachricht in UTF-8-Zeichensatz und speichere sie in DB. Um den Zeichensatz zu konvertieren, verwende ich mb_convert_encoding, aber gb2312 und ks_c_5601-1987 kann nicht konvertiert werden. Beim googeln habe ich festgestellt, dass ich statt gb2312CP936 verwenden kann und ks_c_5601-1987CP949 verwende.Wie normalisiert man Kodierungsnamen, wie ks_c_5601-1987 zu CP949?

Mit dem obigen Ansatz würde es bedeuten, eine separate Liste von Zeichensatzzuordnungen in meinem Code zu verwalten. Gibt es eine Möglichkeit, Namen von Kodierungen auf Namen zu normalisieren, die intern von PHP unterstützt werden, so dass keine Karte lokal gepflegt werden muss?

+0

ich würde vorschlagen, yo Verallgemeinern Sie die Frage, um nach einer Möglichkeit zu fragen, Namen von Kodierungen auf Namen zu normalisieren, die intern von PHP unterstützt werden. Das wäre eine nützliche, allgemein anwendbare Frage. – deceze

+0

Danke nice suggestion bearbeitet die Frage –

+0

'iconv' erkennt' ks_c_5601-1987' aber kann nicht konvertieren. 'mb_convert_encoding' unterstützt' 949' oder 'ks_c_5601-1987' überhaupt nicht. 'iconv' erkennt und kann' gb2312' trotzdem konvertieren. – Esailija

Antwort

2

Nach der list of supported character encodings gibt es nur eine kleine Anzahl von Codierungen explizit von der Codepage aufgelistet. Angesichts der geringen Anzahl dieser Fälle - obwohl keine eingebaute Normalisierung wie gefordert - sollte eine Liste von Zuordnungen nicht zu unangemessen sein.

Die entsprechenden diejenigen erscheinen, die folgenden sein (der Klein Name auf der rechten Seite ist der Name, den Sie von konvertieren benötigen):

  • CP932 Shift_JIS
  • CP51932 EUC_JP
  • CP50220 Iso- 2022-jp
  • CP50221 csISO220JP
  • CP50222 iso-2022-jp
  • CP936 gb2312
  • CP950 big5

Im folgenden werden auch von Code-Seite auf der PHP-Dokumentation aufgeführt, aber geeignet Synonyme erscheinen bereits haben:

  • CP866 (IBM866)
  • UHC (CP949)
  • von Windows-1251 (CP1251)
  • Windows 1252 (CP1252)
Verwandte Themen