que para nbsp especiales espacios espacio emplea ejemplo code caracteres blanco atributo html url filenames url-encoding

para - Un espacio html se muestra como% 2520 en vez de% 20



en html, el atributo alt se emplea para (5)

¿Prueba esto?

encodeURIComponent(''space word'').replace(/%20/g,''+'')

Al pasar un nombre de archivo al navegador Firefox, se reemplazan espacios con %2520 lugar de %20 .

Tengo el siguiente código HTML en un archivo llamado myhtml.html :

<img src="C:/Documents and Settings/screenshots/Image01.png"/>

Cuando cargo myhtml.html en myhtml.html , la imagen aparece como una imagen rota. Así que hago clic derecho en el enlace para ver la imagen y se muestra esta URL modificada:

file:///c:/Documents%2520and%2520Settings/screenshots/Image01.png ^ ^-----Firefox changed my space to %2520.

¿Qué diablos? Convirtió mi espacio en un %2520 . ¿No debería estar convirtiéndolo en un %20 ?

¿Cómo cambio este archivo HTML para que el navegador pueda encontrar mi imagen? ¿Que está pasando aqui?


Cuando intentas visitar un nombre de archivo local a través del navegador Firefox, debes forzar el file:/// protocol ( http://en.wikipedia.org/wiki/File_URI_scheme ) o de lo contrario, firefox codificará tu espacio DOS VECES. Cambia el fragmento de html de esto:

<img src="C:/Documents and Settings/screenshots/Image01.png"/>

a esto:

<img src="file:///C:/Documents and Settings/screenshots/Image01.png"/>

o esto:

<img src="file://C:/Documents and Settings/screenshots/Image01.png"/>

Luego se le notifica a firefox que este es un nombre de archivo local, y muestra la imagen correctamente en el navegador, codificando correctamente la cadena una vez.

Enlace útil: http://support.mozilla.org/en-US/questions/900466


El siguiente fragmento de código resolvió mi problema. Pensé que esto podría ser útil para otros.

var strEnc = this.$.txtSearch.value.replace(//s/g, "-"); strEnc = strEnc.replace(/-/g, " ");

En lugar de usar el encodeURIComponent predeterminado, mi primera línea de código convierte todos los spaces en hyphens utilizando el patrón regex //s/g y la siguiente línea hace lo contrario, es decir, convierte todos los hyphens en spaces con otro regex pattern /-/g . Aquí /g es en realidad responsable de finding all los caracteres coincidentes.

Cuando envío este valor a mi llamada Ajax, se desplaza como normal spaces o simplemente %20 y se deshace de la double-encoding .


Por alguna razón, la URL se codificó dos veces. %25 es el signo % urlencoded. Así que la url original se veía así:

http://server.com/my path/

Luego se urlencoded una vez:

http://server.com/my%20path/

y dos veces:

http://server.com/my%2520path/

Por lo tanto, no debe hacer urlencoding ya que otros componentes ya lo tienen para usted. Use simplemente un espacio


Un poco de explicación sobre lo que es %2520 :

El carácter de espacio común está codificado como %20 como te has fijado. El carácter % está codificado como %25 .

La forma en que obtienes %2520 es cuando tu URL ya tiene un %20 y se vuelve a codificar de nuevo, lo que transforma el %20 en %2520 .

¿Está usted (o cualquier marco que pueda estar usando) caracteres de doble codificación?

Editar: ampliando un poco sobre esto, especialmente para los enlaces LOCALES . Suponiendo que desea vincular al recurso C:/my path/my file.html :

  • si solo proporciona una ruta de archivo local, se espera que el navegador codifique y proteja todos los caracteres dados (en el ejemplo anterior, debe darle espacios como se muestra, ya que % es un nombre de archivo válido y como tal se codificará) convirtiendo a una URL adecuada (ver siguiente punto).
  • si proporciona una URL con el protocolo file:// , básicamente está diciendo que ha tomado todas las precauciones y codificado lo que necesita codificación, el resto debe tratarse como caracteres especiales. En el ejemplo anterior, debe proporcionar file:///c:/my%20path/my%20file.html . Además de corregir barras, los clientes no deberían codificar caracteres aquí.

NOTAS:

  • Dirección de barra diagonal / barras diagonales / se usan en URLs, barras diagonales / en las rutas de Windows, pero la mayoría de los clientes trabajarán con ambas convirtiéndolas en la barra inclinada correcta.
  • Además, hay 3 barras después del nombre del protocolo, ya que se refiere silenciosamente a la máquina actual en lugar de a un host remoto (la ruta no abreviada completa sería file://localhost/c:/my%20path/my%file.html ), pero de nuevo la mayoría de los clientes trabajarán sin la parte del host (es decir, dos barras) asumiendo que se refiere a la máquina local y agregando la tercera barra inclinada.