7

メール サーバーからメールを取得し、メッセージを UTF-8 文字セットに変換して DB に保存しています。文字セットを変換するには、mb_convert_encoding を使用していますが、変換に失敗し gb2312ますks_c_5601-1987gb2312グーグルで、代わりに使用できることがわかりましたCP936and for ks_c_5601-1987use CP949

上記のアプローチに従うと、コード内に文字セット マッピングの別のリストを保持することになります。エンコーディングの名前を PHP で内部的にサポートされている名前に正規化して、ローカルでマップを維持する必要をなくす方法はありますか?

4

1 に答える 1

2

サポートされている文字エンコーディングのリストによると、コード ページごとに明示的にリストされているエンコーディングはごく少数です。これらのケースの数が少ないことを考えると (要求された組み込みの正規化ではありませんが)、マッピングのリストはそれほど不適切ではない可能性があります。

関連するものは次のように見えます (右側の小文字の名前は、変換する必要がある名前です):

  • CP932 shift_jis
  • CP51932 euc_jp
  • CP50220 iso-2022-jp
  • CP50221 csISO220JP
  • CP50222 iso-2022-jp
  • CP936 gb2312
  • CP950ビッグ5

以下も PHP ドキュメントのコードページ別にリストされていますが、適切な同義語が既にあるようです。

  • CP866 (IBM866)
  • UHC (CP949)
  • Windows-1251 (CP1251)
  • Windows-1252 (CP1252)
于 2012-12-10T14:03:38.803 に答える