【问题标题】:Change encoding from windows-1251 to utf-8将编码从 windows-1251 更改为 utf-8
【发布时间】:2019-12-26 09:55:09
【问题描述】:

我正在尝试解码在 windows-1251 中创建的文件并将它们编码为 UTF-8。除了一些特殊字符(例如 ÅÄÖåäö)外,一切正常。例如 Ä 变成 Ž ,然后我使用 preg_replace 来改变它的工作正常,如下所示:

$file = preg_replace("/\Ž/", 'Ä', $file);

我在使用 Å 时遇到问题,它显示为 <U+008F>,我看到它转换为单班三,我似乎无法在其上使用 preg_replace?

【问题讨论】:

  • 为什么不找一个更好的初始转换方法?
  • 使用iconv()
  • $file = iconv ("Windows-1251", "UTF-8", $file);

标签: php encode


【解决方案1】:

您有两个主要的内置函数来完成这项工作,只需选择一个:

  • Multibyte String:

    $file = mb_convert_encoding($file, 'UTF-8', 'Windows-1251');
    
  • iconv:

    $file = iconv('Windows-1251', 'UTF-8', $file);
    

要确定为什么您的自制替代品不起作用,我们需要花一些时间审查完整的代码库,但我可以想到一些潜在的问题:

  • 您正在使用混合编码,但未使用十六进制表示法或任何类型的字符串实体。脚本文件本身保存为什么编码也不清楚。

  • PCRE 中没有 escape sequence(不知道意图是什么)。

  • 也许您不止一次替换了某些字符串。

  • 最后但同样重要的是,您是否编译了一个完整且正确的字符映射数据库,其中至少包含两种编码之间不同的 128 个代码点?

【讨论】:

猜你喜欢
  • 2012-01-24
  • 2011-02-17
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
相关资源
最近更新 更多