ThinkPHP 5.1 伪静态 URL中包含中文的时候报错

ThinkPHP 5.1 伪静态 URL中包含中文的时候报错

问题描述:

这是线上测试项目地址:

https://wanweibaike.net/wiki/Category-..xx&等等 出现错误
https://wanweibaike.net/wiki/Category-..xx& 能正确显示
https://wanweibaike.net/wiki/Category-123abc 能正确显示

也就是只要有中文,就会报错,使用的thinkphp5.1框架,服务器环境为windows 2012R2, 安装宝塔面板,web环境为:PHP5.6+MYSQL5.6+IIS8.5,这个环境还安装了thinkphp 3.13, 伪静态url包含中文能正确显示,如:https://wanweicidian.com/wiki-猶是 (这是同服务器的另一个thinkphp3.13搭建的网站)



1、同服务器其他网站url包含中文能正常显示:证明不是IIS rewrite的问题;
2、路由规则为:Route::rule('wiki/Category-:title', 'Category/index')->pattern(['title' => '[\s\S]*']); 在本地wamp环境能正确获取中文:证明不是路由正则的问题;
3、同一套程序,在本地wamp环境能正常显示,在IIS上不能正确显示,但是其他网站在该IIS下又能正确显示。

把那个含有中文字符的 《Category-..xx&等等 》转义一下:mb_convert_encoding($url, "UTF-8", "GBK")