La codificación de caracteres parece funcionar en un servidor MAMP pero no en un servidor WAMP

StackOverflow https://stackoverflow.com/questions/550895

Pregunta

He estado trabajando en una aplicación web que debería poder aceptar etiquetas y consultas de búsqueda en varios idiomas.Eso no es pedir demasiado, ¿verdad?

Ahora, en mi servidor MAMP de desarrollo todo está genial.Agrego etiquetas multilingües, busco en cualquier idioma que quiera, etc.

Por otro lado, en el servidor WAMP de producción, los caracteres multilingües dan problemas.Y ni siquiera todo el tiempo, sólo algunas veces, o algunos de los personajes, no estoy seguro todavía.

Lo que sucede es que obtienen caracteres adicionales y luego la decodificación de su URL no es adecuada.

Ambos entornos utilizan PHP 5, MySQL y Apache.

Supongo que me equivoqué en alguna configuración.

¿Algunas ideas?

  • actualizar:Ahora estoy seguro de que son letras particulares (el hebreo ל,מ א, por ejemplo)

  • actualizar:fácilmente reproducible:Siempre las mismas letras tienen una codificación incorrecta.

  • el tipo de contenido es text/html; charset=utf-8

Además, lo he señalado un poco más:
Yo uso la cadena de búsqueda: ליבני
En la página de resultados veo esto:

  • En la barra de direcciones, la frase de búsqueda es correcta y está codificada correctamente en la URL.
  • En el propio HTML veo la cadena "�_יבני" cual es "%D7_%D7%99%D7%91%D7%A0%D7%99"lo que significa el ל ha sido codificado como "%D7_" en lugar de "%D7%9C"como debería haber sido.

Realmente no sé por dónde ir más lejos.
¿Algunas ideas?¿alguien?

¿Fue útil?

Solución 3

Resulta que el problema está en algún lugar dentro de parse_url () de PHP. Supongo que en algunas versiones, en algunas plataformas, parse_url () no controla correctamente caracteres UTF. Fue descubierto en ventanas al menos una vez más .

Yo era capaz de solucionar todo por ahora.

Gracias por el tiempo y la atención de todos, Omer.

Otros consejos

Juegos de caracteres son reunir a un concepto simple. Lo confuso acerca de ellos, es que hay múltiples niveles en los que se debe hacer correctamente. Si se equivoca en un solo lugar, por lo general se muestran en un lugar completamente diferente.

Así que la respuesta poco condescendiente, pero también muy fiel a su problema es que lo que necesita saber lo que está haciendo, en lugar de meter en él con un palo hasta que tipo de se ve bien.

recomiendo la lectura siguiente:

Yo recomiendo usar UTF-8 para la codificación interna y externa. Utilice la AddDefaultCharset Directiva para decirle a Apache que su codificación por defecto:

AddDefaultCharset utf-8

Ahora sólo tiene que asegurarse de que la aplicación maneja los datos correctamente (ver Directiva default_charset ). Si utiliza UTF-8 para su salida, el cliente debe utilizar esto para nuevas peticiones (URL, los datos de formularios) también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top