Hello,
after upgrade from version 4.5.2 to 4.6.2 on my site I can not search words contain czech characters :-(

Example:

Search for: navigátor
Output:
The word C3 was not included because it is too short.
navig%C3%A1tor

I have mysql-4.1.7-nt, PHP 4.3.9

Comments

Steven’s picture

Works fine on Drupal.org. Need more information / bug info:

http://drupal.org/search/node/navig%C3%A1tor

maca’s picture

I did some additional tests and here is result.

I have IIS server :-( with configured support for clean url. When I disable clean url, problem disappear. I test it on clean installation of drupal 4.6.2. Maybe it is IIS problem, becaue you are running Drupal on Apache with clean url without problem? I do not known.

Part of my settings.php for clean url support on IIS.

$sub_dir = ""; // enter a subdirectory, if any. otherwise, use ""
$active = 1; // set to 1 if using clean URLS with IIS
if ($active && strstr($_SERVER["QUERY_STRING"], ";")) {
  $qs = explode(";", $_SERVER["QUERY_STRING"]);
  $url = array_pop($qs);
  $parts = parse_url($url);
  unset($_GET, $_SERVER['QUERY_STRING']); // remove cruft added by IIS
  if ($sub_dir) {
    $parts["path"] = substr($parts["path"], strlen($sub_dir));
  }
  $_GET["q"] = trim($parts["path"], "/");
  $_SERVER["REQUEST_URI"] = $parts["path"];
  if ($parts["query"]) {
    $_SERVER["REQUEST_URI"] .= '?'. $parts["query"];
    $_SERVER["QUERY_STRING"] = $parts["query"];
    $_SERVER["ARGV"] = array($parts["query"]);
    parse_str($parts['query'], $arr);
    $_GET = array_merge($_GET, $arr);
    $_REQUEST = array_merge($_REQUEST, $arr);
  }
}
Steven’s picture

Status: Active » Closed (won't fix)

Your code is buggy, it needs a call to urldecode() for all the keys and values it sets.