Domanda

Sto cercando di decodificare questa stringa URL usando la funzione UrldeCode di PHP:

urldecode("Ant%C3%B4nio+Carlos+Jobim");

Questo dovrebbe produrre ...

'Antônio Carlos Jobim'

... ma invece lo sta oggente

'Antônio Carlos Jobim'

Ho testato la stringa in a Decoder online basato su JS Con grande successo, ma non riesco a fare questo lato del server di operazione. Qualche idea?

È stato utile?

Soluzione

La tua stringa è anche UTF-8 codificato. Questo funzionerà:

echo utf8_decode(urldecode("Ant%C3%B4nio+Carlos+Jobim"));

Output: "Antônio Carlos Jobim".

Altri suggerimenti

In realtà, ottieni l'output desiderato, ma non è interpretato come UTF-8. Se questo è su un'applicazione HTTP, è necessario inviare un'intestazione o un meta tag (o entrambi) che direbbe al client di utilizzare UTF-8.

Modificare: per esempio:

// replace text/html with the content type you're using
header('Content-Type: text/html; charset=UTF-8');

quando io faccio

<?php
echo urldecode("Ant%C3%B4nio+Carlos+Jobim");
?>

Il suo display correttamente nel mio browser come

Antônio Carlos Jobim

Ho testato con XAMPP

Stai anche usando htmlenteties Prima di riecheggiare nella pagina? Quando ho appena testato il tuo codice ha funzionato bene solo con il urldecode("Ant%C3%B4nio+Carlos+Jobim"); parte, ma quando l'ho attraversato htmlentities Ho ottenuto lo stesso output di te.

Sembra essere un problema con i caratteri UTF-8 e come PHP gestisce il htmlentities funzione.

Un'altra opzione è:

<?php
$smthing = 'http%3A%2F%2Fmysite.com';
$smthing = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($smthing)); 
$smthing = html_entity_decode($smthing,null,'UTF-8');
echo $smthing;
?>

L'output diventa: http://mysite.com

Per prima cosa devi decodificare nella funzione Urldecoder "UrldeCoder ()" e quindi utilizzare la funzione decoder UTF "UTF_DECODER ()"

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