swoft-cloud / swoft

🚀 PHP Microservice Full Coroutine Framework
https://swoft.org
Apache License 2.0
5.58k stars 788 forks source link

swoft2.0 restful路由中文字符问题 #678

Closed geekchenzx closed 5 years ago

geekchenzx commented 5 years ago

中文字符通过restful get方法,框架接收到的字符确实框架自动转换成某个字母,或者出现报错路由未定义

geekchenzx commented 5 years ago

PHP版本7.3 ,swoole版本 4.3.3,OS: macOS

inhere commented 5 years ago

提供一个可复现的demo代码

geekchenzx commented 5 years ago

提供一个可复现的演示代码

/**

public function search(string $field): object { return Resource::where('name', 'like', "%{$field}%")->get();

}

如果name值为中文就会出现上诉问题 postman测试会出现这个问题

inhere commented 5 years ago

我在单元测试里测试 是没有问题的呢

panyongwei commented 5 years ago

提供一个可复现的演示代码

/**

  • 搜索某个资源
  • @RequestMapping(route="search/{name}", method={RequestMethod::GET})
  • @param Request $request
  • @param string $name
  • @return array */ public function search(Request $request, string $name) { try { $data = $this->resource->search($name);
        if (!$data->toArray()) {
            return res_data(0, '暂无搜索内容');
        }
        return res_data(1, 'success', $data);
    }catch (\Exception $e) {
        return res_data(0, '数据库出错: ' . $e->getMessage());
    }
}

public function search(string $field): object { return Resource::where('name', 'like', "%{$field}%")->get();

}

如果name值为中文就会出现上诉问题 postman测试会出现这个问题

image 这边按照这样操作也是没有问题的