PHP - ÅÄÖ spökar på som vanligt...

Permalänk
Medlem

PHP - ÅÄÖ spökar på som vanligt...

Hej!

Håller för tillfället på att bygga upp en site, på en del av den vill jag kunna geocoda en adress till koordinater för att sedan kunna visa en "marker" på kartan.

Jag använder mig för tillfället av Google maps API och det verkar inte som att mina å,ä och ö blir särskilt korrekta.

$geocode = geoCode("Stora vägen 11111 Stockholm",$api_key);

I min funktion finns sedan:
function geoCode($adress, $api_key){
$adress = urlencode(utf8_encode($adress))
osv.
}

Strängen $adress blir då detta, något som Google Maps vägrar förstå korrekt.
Stora+v%C3%83%C2%A4gen+11111+Stockholm

Problemet som uppstår nu är att Gmaps inte hittar rätt på gatunivå utan endast via postnummret 11111. Det fungerar ypperligt att hitta rätt på gatunivå om jag använder 'a' istället för 'ä' eller matar in en gata som inte innehåller å,ä,ö.

Ska ä verkligen översättas till "%C3%83%C2%A4"? Enligt diverse tabeller jag tittat på så ska "c3 a4" motsvara ä.

Fastnat fullständigt, antar att jag skulle kunna göra om alla å och ä till a och ö till o men koden blir mycket osmidigare då..

Någon som har en aning om vad som kan vara fel?

Permalänk
Medlem

Testa ta bort utf8_encode()

Permalänk
Medlem
Skrivet av Massy:

Hej!

Håller för tillfället på att bygga upp en site, på en del av den vill jag kunna geocoda en adress till koordinater för att sedan kunna visa en "marker" på kartan.

Jag använder mig för tillfället av Google maps API och det verkar inte som att mina å,ä och ö blir särskilt korrekta.

$geocode = geoCode("Stora vägen 11111 Stockholm",$api_key);

I min funktion finns sedan:
function geoCode($adress, $api_key){
$adress = urlencode(utf8_encode($adress))
osv.
}

Strängen $adress blir då detta, något som Google Maps vägrar förstå korrekt.
Stora+v%C3%83%C2%A4gen+11111+Stockholm

Problemet som uppstår nu är att Gmaps inte hittar rätt på gatunivå utan endast via postnummret 11111. Det fungerar ypperligt att hitta rätt på gatunivå om jag använder 'a' istället för 'ä' eller matar in en gata som inte innehåller å,ä,ö.

Ska ä verkligen översättas till "%C3%83%C2%A4"? Enligt diverse tabeller jag tittat på så ska "c3 a4" motsvara ä.

Fastnat fullständigt, antar att jag skulle kunna göra om alla å och ä till a och ö till o men koden blir mycket osmidigare då..

Någon som har en aning om vad som kan vara fel?

Ditt ä har encodats till fyra bytes istället för två. Jag gissar att det är precis som Snacker säger, att du kör utf8_encode på en UTF8-sträng som redan har två bytes för tecknet 'ä'. Resultatet blir ä.

Skrivet av http://php.net/manual/en/function.utf8-encode.php:

utf8_encode

(PHP 4, PHP 5)

utf8_encode — Encodes an ISO-8859-1 string to UTF-8

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Se till att sidan levereras som UTF8 till och från klienten: spara utdatafilen som UTF8 och skicka även rätt headers för UTF8.
Kör du till/från MySQL eller liknande får du se till att det pratas UTF8 där också.

Visa signatur

Citera, tack!
Har du läst tråden om strandhögtalare och andra musiklådor?

Permalänk
Medlem

Tack så mycket för svaren, visst var det så att jag redan hade den i UTF8 så att "sökningen" på Gmaps blev ä. *facepalm*

Skrivet av blomqvist:

Se till att sidan levereras som UTF8 till och från klienten: spara utdatafilen som UTF8 och skicka även rätt headers för UTF8.
Kör du till/från MySQL eller liknande får du se till att det pratas UTF8 där också.

När jag kör från databasen brukar det inte vara några problem men nu blev det allmänt kaos

Permalänk
Medlem

header ('Content-Type: text/html; charset=utf-8');
Testa det

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av Snacker:

header ('Content-Type: text/html; charset=utf-8');
Testa det

Skickades från m.sweclockers.com

Det första du skrev var felet, jag tog bort "encoden" och då blev det rätt. Nu blir det bara encodat en gång som det ska.