今天发现分页有中文参数会出现乱码,以前都是查询字符串或数字没有问题,所以没发现。URL在Apache上是/不会有问题,但是在IIS上用/会乱码,必须用?=这种格式才行。
在某个问题下的回答,终于把分页的格式转成了?=,解决了这个问题,特此分享下,如有更多解决办法欢迎探讨。
只用改ThinkPHP\Library\Think\Page.class文件:
把:return str_replace(urlencode('[PAGE]'), $page, $this->url);
改成:return str_replace('[PAGE]', $page, $this->url);
把:$this->url = U(ACTION_NAME, $this->parameter);
改成:$paramStr="";
foreach($this->parameter as $key => $value){
$paramStr = $paramStr.'&'.$key.'='.$value;
}
$paramStr = substr($paramStr,1,strlen($paramStr));
$this->url = U(ACTION_NAME).(strpos(U(),"?")?'&':'?').$paramStr;