framework icon indicating copy to clipboard operation
framework copied to clipboard

修复debug模式下编码问题导致的json_encode失效问题'

Open wubiandaxian opened this issue 4 years ago • 6 comments

如果计算机名为中文(本地开发常见)。在debug开启的模式下,会因为编码问题导致json_decode()失效,而报‘’Malformed UTF-8 characters‘’的错误,会看不到具体的报错信息。

wubiandaxian avatar Jan 08 '21 10:01 wubiandaxian

我也存在这个问题,但官方为什么不更新?

lzj500 avatar Mar 17 '22 06:03 lzj500

修改的不对,你这样修改有问题, 如果要改也是该这个地方:

public static function __make(App $app)
    {
        $request = new static();

        if (function_exists('apache_request_headers') && $result = apache_request_headers()) {
            $header = $result;
        } else {
            $header = [];
            $server = $_SERVER;
            foreach ($server as $key => $val) {
                if (0 === strpos($key, 'HTTP_')) {
                    $key          = str_replace('_', '-', strtolower(substr($key, 5)));
                    $header[$key] = $val;
                }
            }
            if (isset($server['CONTENT_TYPE'])) {
                $header['content-type'] = $server['CONTENT_TYPE'];
            }
            if (isset($server['CONTENT_LENGTH'])) {
                $header['content-length'] = $server['CONTENT_LENGTH'];
            }
        }

        $request->header = array_change_key_case($header);
        $request->server = $_SERVER;
        $request->env    = $app->env;

        $inputData = $request->getInputData($request->input);

        $request->get     = $_GET;
        $request->post    = $_POST ?: $inputData;
        $request->put     = $inputData;
        $request->request = $_REQUEST;
        $request->cookie  = $_COOKIE;
        $request->file    = $_FILES ?? [];

        return $request;
    }

但你最好检查一下你的环境,这个是来自$_SERVER的,最好不要因为这种情况修改核心框架,

你可以尝试在入口文件运行框架前,修改$_SERVER这个全局变量,看看是否能解决问题.

augushong avatar Mar 17 '22 06:03 augushong

碰见同样问题了 仅在这个电脑 win10

zhhqiang3 avatar May 05 '22 08:05 zhhqiang3

@augushong 请问这是修改的那个文件?

myixyt avatar May 20 '22 12:05 myixyt

Reuqest的对象类。

修改make方法。

augushong avatar May 20 '22 13:05 augushong

打印了下serve 发现path 里面有个微信开发者工具的dll 删了 重启了下环境 就好了

zhhqiang3 avatar May 28 '22 14:05 zhhqiang3