$string = $this->getTextFromHTML($html);
echo mb_detect_encoding($string, 'ASCII,UTF-8,ISO-8859-1');
$stringArray = mb_split('\W+', $string);
$cleaned = array();
foreach($stringArray as $v) {
$string = trim($v);
if(!empty($string))
array_push($cleaned, $string);
}
echo mb_detect_encoding($stringArray[752], 'ASCII,UTF-8,ISO-8859-1');
以上回报:
// UTF-8
// ASCII
我的代码的哪一部分将我的字符串转换为ASCII?或者我错误地检测到编码?
解决方法:
字符串没有实际的关联编码,它们只是字节数组. mb_detect_encoding不告诉你字符串的编码,它只是试图检测它.这意味着它需要一些猜测(你的第二个参数)并告诉你第一个有效的.
您的原始字符串可能包含一些非ASCII字符,因此ASCII不是有效的编码,但UTF-8是.当您稍后测试原始子字符串时,该子字符串可能只包含在ASCII中有效的字符,并且因为ASCII是第一个经过测试的编码,所以这就是猜测结果.任何ASCII字符串也是有效的UTF-8,因此没有发生实际问题或“转换”.