php – 什么将我的UTF-8字符串更改为ASCII?

我有以下代码

$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,因此没有发生实际问题或“转换”.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...