几天前,和deepseek研究了群组相册列表和论坛附件图片批处理删除原图替换为缩略图的方法。现把主要内容记录。
真正通用的编码转换函数
方案1:改进版(去掉数据库查询)/**
* 智能编码转换(通用版)
* @param string $str 要转换的字符串
* @param string $to 目标编码(默认 UTF-8)
* @param string $from 源编码(自动检测)
* @return string 转换后的字符串
*/
function smartConvert($str, $to = 'UTF-8', $from = 'auto') {
if (empty($str)) {
return $str;
}
// 如果指定了源编码,直接转换
if ($from !== 'auto') {
$result = @mb_convert_encoding($str, $to, $from);
if ($result && $result != $str) {
return $result;
}
}
// 自动检测常见编码
$encodings = ['UTF-8', 'GBK', 'GB2312', 'GB18030', 'BIG5', 'latin1'];
foreach ($encodings as $encoding) {
if ($encoding === $to) continue; // 跳过目标编码
$result = @mb_convert_encoding($str, $to, $encoding);
if ($result && $result != $str) {
// 验证转换结果是否有效
$check = @mb_convert_encoding($result, $encoding, $to);
if ($check == $str) {
return $result;
}
}
}
// 都失败,返回原值
return $str;
}

