Nominatim findet Straße bzw. Ort mit Umlaut nicht

Hallo zusammen,

nach einiger Zeit habe ich den nachfolgenden script mal wieder ausgeführt. Mit diesem möchte ich feststellen, ob ein Straßenname existiert. Nun fiel mir auf, dass Straßennamen oder Orte mit Umlaut nicht gefunden werden. Wird ein Straßenname sowie ein Ort ohne Umlaut angegeben, funktioniert es. Es spielt auch keine Rolle, ob ich die Umlaute konvertiere (Köln->Koeln). Komischerweise funktionierte es früher einwandfrei.

Beispiel:
“Nelkenstr.,Wiesbaden” wird gefunden
“Altmünsterstr.,Wiesbaden” wird NICHT gefunden
“Altmuensterstr.,Wiesbaden” wird NICHT gefunden

Habt Ihr eine Idee? Ich bin wirklich ratlos! Ich glaube, dass es bei meinen zahlreichen Versuchen in den letzten Tagen auch zwei gefundene Treffer bei Straßennamen mit Umlaut gegeben hat.

Könnte das evtl. mit den PHP Einstellungen auf meinem Server zu tun haben? Dort steht:
default_charset: ISO-8859-15


<?php
function umlaute($text)
{
$search  = array ('ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü', 'ß');
$replace = array ('ae', 'oe', 'ue', 'Ae', 'Oe', 'Ue', 'ss');
$str2  = str_replace($search, $replace, $text);
return $str2;
}
$agent=$_SERVER['HTTP_USER_AGENT'];
$opts = array('http'=>array('header'=>"User-Agent: ".$agent."\r\n"));
$context = stream_context_create($opts);

$strasse="Nelkenstr.";
//$strasse="Altmünsterstr.";
$ort="Wiesbaden";
$strasse2=umlaute($strasse);
$ort2=umlaute($ort);
$adr5=$strasse.",".$ort;
$adr9 = file_get_contents('https://nominatim.openstreetmap.org/search?format=json&accept-language=de&q='.rawurlencode($adr5), false, $context);
$adr10 = json_decode($adr9);
echo "<pre>";
print_r ($adr10);
?>

Ich weiss nicht, ob Nominatim generell mit Abkürzungen umgehen kann, aber ich war überrascht, dass Du das versuchst. Die Suche nach “Altmünsterstraße,Wiesbaden” funzt jedenfalls (zumindest wird was gefunden).

URLs mit Anfragen an Nominatim müssen in UTF-8 kodiert sein, sonst geht es nicht. Ich hätte allerdings erwartet, dass rawurlencode() da das richtige macht. Eventuell mal zusätzlich mit utf8_encode() probieren? Oder einfach das default-charset auf “UTF-8” setzen. Das ist heutzutage ohnehin der bessere Default.

Das expandierte Umlaute (oe, ae, ue) gerade nicht gehen, ist ein bekanntes Problem. Fix dafür ist schon in der Testphase.

Super, es klappt. Es lag wirklich an “utf8_encode”. Ich lase meine Einstellungen aber auf “default_charset: ISO-8859-15”, da ich sonst sämtliche Seiten neu anpassen müßte :slight_smile:

OT: Das hat man gewöhnlich vor - trommelwirbel - 15 Jahren schon umgestellt.