Estoy tratando de generar imágenes de códigos QR que contienen rutas de Google Maps. Por ejemplo, tengo la siguiente URL de Google Maps:
$encodedmapsurl = https://www.google.nl/maps/dir/De%20Aar%2018,%208253%20PN%20Dronten/De%20Lepelaar%2012,%208251MT%20Dronten/De%20Lepelaar%201,%208251mt%20Dronten/De%20Aar%2018,%208253%20PN%20Dronten/Y genero el código QR de Google Charts así:
<img src="https://api.qrserver.com/v1/create-qr-code/?data=$encodedmapsurl&size=150x150" />Termino con el siguiente código QR:
Esto está bien, sin embargo, cuando escaneo el código QR con una aplicación móvil, el resultado es:
Tenga en cuenta que la propia URL contiene %20 por cada espacio en la URL, pero el resultado (después de escanear el código QR) no. Esto da como resultado una URL en la que no se puede hacer clic. Este comportamiento es extraño considerando que algunos generadores de códigos QR incluyen el %20 en la URL después de escanear, como este . ¿Hay alguna forma con la API de código QR de Google Charts para incluir los %20 en la URL después de escanearla? Alternativamente, también estoy de acuerdo con usar otra biblioteca/API de PHP que haga el trabajo (no pude encontrar una). El resultado debería verse así:
Intente codificarlo formalmente como una URL primero:
$encodedmapsurl = "https://www.google.nl/maps/dir/De%20Aar%2018,%208253%20PN%20Dronten/De%20Lepelaar%2012,%208251MT%20Dronten/De%20Lepelaar%201,%208251mt%20Dronten/De%20Aar%2018,%208253%20PN%20Dronten/"; $encodedmapsurl = urlencode($encodedmapsurl);Además, intente también enviar la URL codificada a un acortador bitly o similar antes de generar el código qr.
Si eso todavía no funciona, estando en Japón a menudo encuentro caracteres especiales que conducen a muchos problemas difíciles de encontrar/arreglar (por ejemplo, un carácter "%" de 1 bit frente a un carácter "%" de 2 bits). Intente usar el parámetro charset-source (y charset-target) .
Solo codifica una vez:
$map_url = 'https://www.google.nl/maps/dir/De+Aar+18,+8253+PN+Dronten,+Netherlands/De+Lepelaar+12,+8251+MT+Dronten,+Netherlands/De+Lepelaar+1,+8251+MT+Dronten,+Netherlands/De+Aar+18,+8253+PN+Dronten,+Netherlands/@52.5308376,5.7062268,14z/data=!3m1!4b1!4m25!4m24!1m5!1m1!1s0x47c62a8ab5ae23a5:0x44f1928143db42a1!2m2!1d5.7085273!2d52.5441879!1m5!1m1!1s0x47c62b202ae17a0f:0x1abd001f5225a013!2m2!1d5.7290961!2d52.5190013!1m5!1m1!1s0x47c62b202fc55b65:0x12f835f420fa2676!2m2!1d5.7298615!2d52.5194267!1m5!1m1!1s0x47c62a8ab5ae23a5:0x44f1928143db42a1!2m2!1d5.7085273!2d52.5441879'; $encoded_url = urlencode( $map_url );