【问题标题】:How to convert any possible format to UTF-8 using Iconv?如何使用 Iconv 将任何可能的格式转换为 UTF-8?
【发布时间】:2011-02-17 21:34:21
【问题描述】:

例如,这会将 1251 转换为 utf-8。

$utf8 = iconv('windows-1251', 'utf-8', $ansi);

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

【问题讨论】:

标签: php utf-8 iconv


【解决方案1】:

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

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

他们走了!

【讨论】:

    【解决方案2】:

    您无法从未知字符集进行翻译,您能做的最好的事情就是猜测实际的字符集并将该猜测用作第一个参数 - 您可以为此使用 mb_detect_encoding()

    【讨论】:

    • mb_detect_encoding 仅限于 UTF-8 和 UTF-7、ASCII 和一堆日文字符集。它在一般情况下不起作用,也不能,因为对于单字节字符集没有办法做到这一点——它需要大量的上下文分析,而且实现起来是不可行的。如果您需要支持任意字符集,则需要要求向您提供信息 - 或者如果未提供输入且还不是 UTF-8,则定义一个合理的回退。
    • mb_detect_encoding() 只是做了一个疯狂的猜测。它仅适用于具有良好模式的编码,例如 UTF-8。它无法区分 ANSI 和 Latin-1。
    • @Ole Jak:您究竟需要代码示例做什么?你想知道如何调用一个函数吗?或者如何将返回值传递给另一个函数?
    • 好的,有没有办法强制回退到 latin-1 或 ascii 而不是抛出错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2012-07-19
    • 2013-11-14
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多