Domanda

Sto lavorando con i dati dell'indirizzo del Regno Unito e anche con i dati dell'indirizzo internazionale.

Devo geocodificare i dati dell'indirizzo per l'uso su una mappa di Google. Lo sto facendo usando il servizio HTTP. Vale a dire / Costruire una stringa di query e passarla a file_get_contents ($ THEURL).

Sono riuscito a geocodificare perfettamente l'80% dei dati dell'indirizzo, tuttavia quegli indirizzi in paesi come Norvegia e Sweeden che contengono caratteri speciali non restituiranno un codice geografico. Il codice restituito è 602 (impossibile trovare un indirizzo).

Esaminando la documentazione, vedo che la stringa inviata a google deve essere codificata UTF8.

Ho provato quanto segue per assicurarmi che la stringa sia codificata UTF8 / rimuovere i caratteri speciali.

1) L'uso della codifica UTF8 sulla stringa di query - questo spesso comporta la visualizzazione di caratteri non validi sullo schermo.

2) mb_check_encoding segnala che la stringa è codificata correttamente.

3) Utilizzo di una funzione per sostituire caratteri speciali per i loro eqivilenti europei (nella speranza che Google API compensi.

Qualcuno può suggerire un motivo per cui il mio metodo non funziona (se fare con la codifica o no?).

È stato utile?

Soluzione

Devi sistematicamente esaminare ogni aspetto della codifica nel tuo sistema e definire in quale codifica si trova. Mb_detect_encoding e le congetture non sono un buon approccio qui.

Devi controllare la codifica di:

  • dati in arrivo
    • pagine
    • OTTIENI parametri
    • connessione al database
    • regole di confronto delle tabelle del database
  • i file di script con cui lavori

Se si verificano caratteri non validi, è probabile che tu stia utilizzando ISO-8859-1 o qualche altra codifica non UTF-8 da qualche parte. Quando tutto è pulito UTF-8, la richiesta dovrebbe passare.

Un ottimo articolo di base è Il minimo assoluto che ogni sviluppatore di software deve assolutamente conoscere Informazioni su Unicode e set di caratteri (senza scuse!) .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top