php查询字符串utf8无法正常工作

时间:2012-11-08 16:48:16

标签: php utf-8

我正在尝试生成查询字符串。该函数适用于非utf8字符,但utf8字符显示为空白。

功能

function qs_search($qs) {
  parse_str($_SERVER['QUERY_STRING'], $query_string);
  $query_string['search'] = basename($qs);
  return http_build_query($query_string);
}

这些是结果......

qs_search( '常规');

index.php?list&search=regular

qs_search( 'Синодальный');

index.php?list&search=

1 个答案:

答案 0 :(得分:3)

根据评论,我仍然不知道你为什么使用basename,但使用set_locale将在PHP 5.2 +中工作:

<?php
    function qs_search($qs) {
        $query_string = array();
        $query_string['search'] = basename($qs);
        return http_build_query($query_string);
    }
    setlocale(LC_ALL, "en_US.UTF8");
    var_dump(qs_search("regular"));
    var_dump(qs_search("Синодальный"));
?>

As stated, this will NOT work on PHP 5.0.0 - 5.1.6. Click to see results.

修改

显然,Drupal的开发人员遇到了同样的问题并因their own basename function而创建了this bug,这应该可以解决您在PHP 5.0.0 - 5.1.6上的问题。