本地环境下使用apache,移植到windows服务器上使用IIS,发现使用$_SERVER['REQUEST_URI']时,如果URL带有中文参数,获取到的中文出现乱码。
解决方法:调用$_SERVER['REQUEST_URI']之前,将以下代码贴入即可。
if( isset( $_SERVER['HTTP_X_ORIGINAL_URL'] ) ){
// IIS Mod-Rewrite
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
} else if( isset( $_SERVER['HTTP_X_REWRITE_URL'] ) ) {
// IIS Isapi_Rewrite
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
} else {
// Use ORIG_PATH_INFO if there is no PATH_INFO
( !isset( $_SERVER['PATH_INFO']) && isset( $_SERVER['ORIG_PATH_INFO'] ) ) && ( $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'] );
// Some IIS + PHP configurations puts the script-name in the path-info ( No need to append it twice )
if ( isset( $_SERVER['PATH_INFO'] ) ) {
( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] ) ? ( $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'] ) : ( $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'] );
}
// Append the query string if it exists and isn't null
( isset($_SERVER['QUERY_STRING'] ) && !empty( $_SERVER['QUERY_STRING'] ) ) && ( $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'] );
}
本文介绍了解决在IIS服务器上使用$_SERVER['REQUEST_URI']时遇到的中文参数乱码问题的方法。通过判断并调整$_SERVER['REQUEST_URI']的值来确保正确处理中文字符。
6079

被折叠的 条评论
为什么被折叠?



