将编码从Windows-1251更改为utf-8

问题描述 投票:0回答:1

我正在尝试解码在Windows-1251中创建的文件,并将它们编码为UTF-8。除某些特殊字符(如ÅÄÖåäöö)外,其他所有东西都起作用。例如Ä变成Ž,然后使用preg_replace进行更改,如下所示:

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

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

php encode
1个回答
0
投票

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

  • Multibyte String

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

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

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

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

  • 也许您要多次替换某些字符串。

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

© www.soinside.com 2019 - 2024. All rights reserved.