gpt4 book ai didi

php - 如何使用 PHP 检测 CP437

转载 作者:行者123 更新时间:2023-12-02 04:42:02 25 4
gpt4 key购买 nike

我正在尝试检测给定字符串的编码,以便稍后使用 iconv 将其转换为 utf-8。我想将源编码集限制为utf8、iso8859-1、windows-1251、CP437

//...
$acceptedEncodings = array('utf-8',
'iso-8859-1',
'windows-1251'
);

$srcEncoding = mb_detect_encoding($content, $acceptedEncodings, true);

if($srcEncoding)
{
$content = iconv($srcEncoding, 'UTF-8', $content);
}
//...

问题是 mb_detect_encoding 似乎不接受 CP437 作为支持的编码,当我给它一个 CP437 编码的字符串时,它被归类为 iso-8859-1,这导致 iconv 忽略像 ü 这样的字符。

我的问题是:有没有办法更早检测到CP437编码?使用 iconv 从 CP437 到 UTF-8 的转换工作正常,但我就是找不到检测 CP437 的正确方法。

非常感谢。

最佳答案

正如之前无数次讨论过的那样:从根本上说,不可能将任何单字节编码与任何其他单字节编码区分开来。你得到的是一堆字节。在编码 A 中,字节 x42 可能映射到字符 X,而在编码 B 中,相同的字节可能映射到字符 Y。但是你所拥有的字节 block 没有告诉你这一点,因为你只有字节.它们可以代表任何意思。它们在所有编码中都同样有效。可以识别更复杂的多字节编码,如 UTF-8,因为它们需要遵循更复杂的内部规则。所以可以肯定地说这不是有效的UTF-8。但是,不可能 100% 肯定地说这绝对是 UTF-8,而不是 ISO-8859

你需要有关于你收到的内容的元数据,它告诉你内容的编码。事后识别它是不切实际的。您需要使用实际的内容分析来确定一段文本的哪种编码最有意义。

关于php - 如何使用 PHP 检测 CP437,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20629938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com