Esto me molesta mucho, así que espero que alguien aquí pueda decirme qué estoy haciendo mal. He estado ejecutando un servidor web Apache en mi computadora portátil con Windows 7 por un tiempo, para probar algo de programación que he estado haciendo en mi tiempo libre. Recientemente, noté que los caracteres Unicode en mis páginas no se mostraban correctamente en mi navegador. Hice lo que resultó ser un montón de pruebas inútiles y descubrí que los caracteres en realidad se enviaban como UTF-8 correcto, y también agregué una <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
línea en la parte superior de mi salida html, que estaba destinada a solucionar el problema, pero no En realidad no hago nada. Luego, me tomé el tiempo para verificar los encabezados de respuesta HTTP y vi que Apache está enviando esto:
HTTP/1.1 200 correcto Fecha: domingo 19 de julio de 2015 18:18:40 GMT Servidor: Apache/2.2.25 (Win32) Codificación de transferencia: fragmentada Tipo de contenido: texto/html; juego de caracteres=iso-8859-1
Bien, eso parece un problema bastante simple. Según Internet, puedo solucionarlo agregándolo AddDefaultCharset utf-8
a mi archivo httpd.conf. No había AddDefaultCharset
líneas en el archivo en ninguna parte, así que lo agregué en la parte inferior exactamente como está escrito arriba. Luego reinicié el servicio Apache y descubrí que el problema no había cambiado. Entonces, reinicié mi computadora, con la teoría de que tal vez no sabía cómo reiniciar Apache correctamente, pero todavía no muestra los caracteres correctamente y todavía envía charset=iso-8859-1
los encabezados.
También encontré un sitio web que sugería que algo llamado Windows VirtualStore podría estar guardando automáticamente el archivo de configuración en otro lugar solo para joderme, pero no creo que esto esté sucediendo porque no puedo encontrar ningún archivo Apache en el Directorio de tienda virtual. Además, se supone que puedes desactivar VirtualStore tomando posesión de la carpeta, y lo hice hace un tiempo porque de lo contrario no me permitía cambiar nada.
Desafortunadamente, ni siquiera estoy seguro de qué más mirar para este problema. ¿Alguien tiene alguna idea?
Respuesta1
Intente crear un archivo HTML de 3 líneas, solicítelo desde el navegador y verifique el encabezado. Hacer esto garantiza que no haya encabezados CGI ni nada que interfiera con la configuración de su servidor.
<html><head><title>Some Test file</title></head>
<body>unicode test äöüÄÖÜß</body>
</html>
Continúe jugando con la configuración de su servidor hasta que este archivo se envíe con una charset=utf-8
especificación en el encabezado Tipo de contenido.
A continuación, pruebe un programa Perl mínimo:
#!/usr/bin/perl <-- or omit this line as you're on windows
binmode(STDOUT, ":utf8");
print qq(Content-type: text/html; charset=utf-8
<html><head><title>Some Test file</title></head>
<body>unicode test äöüÄÖÜß</body>
</html>
);
Si esto funciona (envía el encabezado correcto), entonces cualquier otra cosa que no funcione está en sus bibliotecas, no en la configuración de su servidor.