判断一个字符串是否包含乱码:
- 可以用正则匹配,但是你需要知道乱码大概包括的符号有哪些。
- 运用黑魔法之
json_encode($string) === 'null'来判断。如果字符串中含有乱码,json_encode该字符串就会返回null。
function isGarbled($content)
{
$json = \json_encode((array)$content);
return $json == false;
} 判断一个字符串是否包含乱码:
json_encode($string) === 'null' 来判断。如果字符串中含有乱码,json_encode该字符串就会返回null。function isGarbled($content)
{
$json = \json_encode((array)$content);
return $json == false;
} $str = 'good, luck';
$content = base64_decode($str);
var_dump($content);
$content = $content ?: $str;
echo \json_encode($content), PHP_EOL;
echo json_last_error_msg(),PHP_EOL;output...
$ string(6) ""
$ Malformed UTF-8 characters, possibly incorrectly encoded问题如上, 特殊场景正常字符串使用 base64_decode 解码 字符串 异常解码 输出虽然是 “” 但实际上编码已发生改变.
修复上述问题.
# 二参数 strict 当设置 strict 为 true 时,一旦输入的数据超出了 base64 字母表,将返回 false。 否则会静默丢弃无效的字符。
$content = base64_decode($str, true);上面的 base64_decode 二参数亲测不咋好用呀 'Victor here'
上面问题发生场景, 在于 内容老版本没加base64, 新版本有加 , 为了兼容, 产生的上面一系列问题.
还是写个脚本遍历修改下,老版本数据库记录比较省事.