如何规范化编码名称,如ks_c_5601-1987到CP949?

时间:2012-12-10 09:49:10

标签: php utf-8 mb-convert-encoding

我从邮件服务器获取电子邮件并将邮件转换为UTF-8字符集并将其保存在DB中。要转换我使用mb_convert_encoding的字符集但它无法转换gb2312ks_c_5601-1987 。在谷歌搜索中,我发现gb2312而不是CP936ks_c_5601-1987使用CP949而不是{{1}}。

通过上面的方法,它意味着在我的代码中维护一个单独的charset映射列表。 有没有办法将编码名称规范化为PHP内部支持的名称,从而无需在本地维护任何地图?

1 个答案:

答案 0 :(得分:2)

根据list of supported character encodings,代码页明确列出了少量编码。鉴于这些案例数量很少 - 虽然不是所要求的内置规范化 - 但映射列表可能不太合适。

相关的似乎如下(右侧的小写名称是您需要转换的名称):

  • CP932 shift_jis
  • CP51932 euc_jp
  • CP50220 iso-2022-jp
  • CP50221 csISO220JP
  • CP50222 iso-2022-jp
  • CP936 gb2312
  • CP950 big5

以下内容也在PHP文档的代码页中列出,但似乎已经有了合适的同义词:

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