html - usan - Los signos de interrogación que se muestran dentro del texto, ¿por qué es esto?
textos con signos de interrogacion y admiracion para niños (8)
Esto va a ser algo relacionado con las codificaciones de los personajes.
¿Estás seguro de que el sitio reflejado tiene las mismas propiedades en cuanto a las codificaciones de caracteres que tu servidor principal?
Dependiendo de qué tipo de servidor tenga, esto puede ser una propiedad del proceso del servidor mismo, o podría ser una variable de entorno.
Por ejemplo, si este es un entorno UNIX, quizás intente comparar LANG o LC_ALL.
Ver también aquí
Tengo un servidor de copia de seguridad que realiza automáticamente una copia de seguridad de mi sitio en vivo, tanto archivos como bases de datos.
En el sitio en vivo, el texto se ve bien, pero cuando ve la versión duplicada, muestra ''?'' dentro de algunos de los textos. Este texto se almacena en la tabla de la base de datos de noticias.
Aquí hay una captura de pantalla que está en el servidor en vivo y en el servidor duplicado.
¿Qué podría pasar en el proceso de realizar una copia de seguridad en el servidor duplicado? texto alternativo http://i34.tinypic.com/2mpbfo6.jpg
Normalmente maldigo la palabra MS y luego ejecuto el siguiente Wscript.
// reemplazar con ruta a un archivo que necesita limpieza
PATH = "test.html"
var go = WScript.CreateObject ("Scripting.FileSystemObject");
var content = go.GetFile (PATH) .OpenAsTextStream (). ReadAll ();
var out = go.CreateTextFile ("clean -" + PATH, true);
// símbolos
content = content.replace (/ "/ g, ''"'');
content = content.replace (/ "/ g, ''"'');
content = content.replace (/ ''/ g, "''");
content = content.replace (/ - / g, "-");
content = content.replace (/ © / g, "& copy;");
content = content.replace (/ ® / g, "& reg;");
content = content.replace (/ ° / g, "& deg;");
content = content.replace (/ ¶ / g, "<p>");
content = content.replace (/ ¿/ g, "& iquest;");
content = content.replace (/ ¡/ g, ''& iexcl;'');
content = content.replace (/ ¢ / g, ''& cent;'');
content = content.replace (/ £ / g, ''& libra;'');
content = content.replace (/ ¥ / g, ''& yen;'');
out.Write (contenido);
Su navegador no ha interpretado correctamente la codificación de la página (ya sea porque la ha forzado a una configuración en particular o porque la página está configurada incorrectamente) y, por lo tanto, no puede mostrar algunos de los caracteres.
Verifique el conjunto de caracteres emitido por su servidor duplicado. Parece que hay una diferencia con respecto al servidor principal: el sitio en vivo parece estar generando Unicode, donde el espejo no lo está. Además, generalmente es una buena idea eliminar los caracteres Unicode en su contenido entrante y reemplazarlos con sus entidades HTML apropiadas.
Su problema específico se refiere a "citas inteligentes", "guiones" y "guiones". Sé que puedes reemplazar em guiones con —
y n-guiones con –
(que debe hacerse en el lado de entrada de su base de datos); No sé cuál sería el reemplazo correcto de las citas inteligentes. (Por lo general, solo reemplazo todas las comillas simples con ''y todas las comillas dobles rizadas con'' ... Los geeks de tipografía pueden dispararme cuando lo vean).
Debo señalar que algunos navegadores son más indulgentes que otros con este problema: Internet Explorer en Windows tiende a detectar y "corregir" esto automáticamente; Firefox y la mayoría de los otros navegadores muestran los signos de interrogación.
Los siguientes artículos serán útiles
http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
Después de conectarse a la base de datos, emita el siguiente comando:
SET NAMES ''utf8'';
Asegúrese de que su página web también use la codificación UTF-8:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
PHP también ofrece varias funciones que serán útiles para las conversiones:
Edite su archivo de configuración de Apache en el servidor "espejo" (el servidor con el problema) y comente la siguiente línea:
AddDefaultCharset UTF-8
Luego reinicia Apache:
service httpd restart
El problema es que la línea "AddDefaultCharset UTF-8" anula el tipo de contenido especificado en los archivos .html; p.ej:
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
El síntoma más común es que los códigos de los personajes por encima de 127 se muestran como diamantes negros con signos de interrogación en ellos (en Chrome, Safari o Firefox) o como pequeños recuadros (en IE y Opera). Los archivos HTML generados por Microsoft Word generalmente tienen muchos de estos caracteres, el más común es el código de carácter 160 = 0xA0, que es equivalente a "& nbsp;" en la codificación de Windows-1252, y a menudo se encuentra entre las etiquetas de span, como esta:
<span style="mso-spacerun: yes">ááá </span>
Unicode u otros personajes del conjunto de caracteres que se caen?
He visto caracteres "extraños" similares aparecer en sitios en los que he trabajado a menudo cuando el texto se copia desde un correo electrónico o algún otro formato de documento (por ejemplo, una palabra) en un editor de texto. El editor puede mostrar los caracteres que no son ASCII pero el navegador no. Para el sitio web, sugeriría buscar el código de entidad HTML para el personaje e insertarlo en su lugar ... o cambiar a otros más estándar.
Llegué aquí buscando una solución para JavaScript que se muestra en el navegador y aunque no esté directamente relacionada con una base de datos ...
En mi caso, copié y pegué un texto que encontré en Internet en un archivo JavaScript y lo guardé con el Bloc de notas de Windows.
Cuando la página que usa ese archivo JavaScript generaba las cadenas, había signos de interrogación (como los que se muestran en la pregunta) en lugar de caracteres especiales como letras acentuadas, etc.
Abrí el archivo usando Notepad++
. Inmediatamente después de abrir el archivo, vi que la codificación de caracteres se estableció como ANSI
como puede ver (cursor del mouse en el pie de página) en la siguiente captura de pantalla:
Para resolver el problema, haga clic en el menú Encoding
en Notepad++
y seleccione Encode in UTF-8
. Usted debe ser bueno para ir. :)