如何使用Iconv将任何可能的格式转换为UTF-8?

8
例如,这将把1251转换为utf-8。
$utf8 = iconv('windows-1251', 'utf-8', $ansi);

但是如何将未知格式(当它到达我们时,我们还不知道它是什么格式)(通常是任何)格式(可能由Iconv知道)转换为utf-8?(代码示例)


在http://www.php.net/manual/en/function.utf8-encode.php#97533的评论中,有许多方法可以实现这一点。 - Mark
2个回答

8

如果无法确定字符集,你就不能进行翻译。最好的办法是猜测实际的字符集并将其用作第一个参数。你可以使用mb_detect_encoding()函数来进行猜测。


4
mb_detect_encoding函数只支持UTF-8、UTF-7、ASCII以及一些日文字符集。由于在单字节字符集中进行此操作是不可行的,并且也没有方法实现,因此它不能在所有场景下使用。如果需要支持任意字符集,则需要确保提供正确的信息,或者定义一个合理的替代方案来处理不是UTF-8的输入。 - Michael Madsen
mb_detect_encoding()只是猜测编码的一种方式。它仅适用于具有良好模式的编码,例如UTF-8。它无法区分ANSI和Latin-1之间的差异。 - ZZ Coder
@Ole Jak:您需要代码示例做什么?您想知道如何调用函数吗?还是想知道如何将返回值传递给另一个函数? - soulmerge
好的,有没有一种方法可以强制回退到latin-1或ascii而不是抛出错误? - MrMesees

-15

我已经用字符串的值编写了一个数组。你只需要这样做:

$string = str_replace("“","",$string);
$string = str_replace("â€Â","",$string);

它们已经消失了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接