thinkphp错误输出乱码修正办法

看了网站上的处理办法,各种没用,只能自己跟代码,处理自定义错误页面,和处理错误信息输出的方法都在核心类库中的function.php中。

处理异常最后都用halt函数输出模板页。所以只需要将halt代码中加上header设置,就可以轻松解决这个问题。

/**
 * 错误输出
 * @param mixed $error 错误
 * @return void
 */
function halt($error)
{
    header('Content-Type: text/html; charset=utf-8');
    $e = array();
    if(APP_DEBUG) {
        //调试模式下输出错误信息
        if(!is_array($error)) {
            $trace = debug_backtrace();
            $e['message'] = $error;
            $e['file'] = $trace[0]['file'];
            $e['line'] = $trace[0]['line'];
            ob_start();
            debug_print_backtrace();
            $e['trace'] = ob_get_clean();
        } else {
            $e = $error;
        }
    } else {
        //否则定向到错误页面
        $error_page = C('ERROR_PAGE');
        if(!empty($error_page)) {
            redirect($error_page);
        } else {
            if(C('SHOW_ERROR_MSG')) {
                $e['message'] = is_array($error) ? $error['message'] : $error;
            } else {
                $e['message'] = C('ERROR_MESSAGE');
            }
        }
    }
    // 包含异常页面模板
    include C('TMPL_EXCEPTION_FILE');
    exit;
}

另外我记得dump函数里面也是没有header设置的,所以在很多时候,dump也会打出乱码,所以顺手把dump的header设置也加上,可以确保代码调试的顺畅。

原文地址:https://www.cnblogs.com/smallgo/p/3175582.html