serialize online ejemplo codificar php url utf-8 urldecode

online - urlencode php



Descodificación de URL en PHP (5)

Estoy tratando de decodificar esta cadena URL utilizando la función urldecode de PHP:

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

Se supone que esto debe salir ...

''Antônio Carlos Jobim''

... pero en lugar de eso está superando esto

''Antônio Carlos Jobim''

He probado la cadena en un decodificador en línea basado en JS con gran éxito, pero parece que no puedo hacer esta operación en el lado del servidor. ¿Algunas ideas?


¿También está utilizando htmlenteties antes de htmlenteties en la página? Cuando acabo de probar tu código funcionó bien solo con el urldecode("Ant%C3%B4nio+Carlos+Jobim"); parte, pero cuando lo ejecuté a través de htmlentities obtuve el mismo resultado que tú.

Parece ser un problema con los caracteres UTF-8 y cómo maneja PHP la función htmlentities .


Cuando lo hago

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

Se muestra correctamente en mi navegador como

Antônio Carlos Jobim

He probado con XAMPP


En realidad, obtienes el resultado deseado, pero no se interpreta como UTF-8. Si se trata de una aplicación HTTP, debe enviar un encabezado o una metaetiqueta (o ambas) que indiquen al cliente que use UTF-8.

Editar: por ejemplo:

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


Su cadena también está codificada en UTF-8. Esto funcionará:

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

Salida: "Antônio Carlos Jobim".


otra opción es:

<?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; ?>

la salida se convierte en: http://mysite.com