php http_build_query出现中文乱码是因为页面编码不是utf-8,而是其他的编码,比如gbk.

解决办法是在页面头部加上header('Content-type: text/html; charset=utf-8');代码即可。

测试代码, php文件的编码为utf-8

<?php
header(\'Content-type: text/html; charset=utf-8\');
isset($_GET[\'a\']) AND print $_GET[\'a\'];
?>
<a href=\"?q=dd&<?=http_build_query(array(\'a\'=>\'杠杠的\'))?>\">dian</a>
收藏 打印