entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Problema codificación en un buscador interno

Hola! me surgio un problema con la codificacion:

Buscando en internet... encontre un sistema de busqueda interno... el problema surge cuando lo inserto en una web... las ñ y acentos me aparecen como ñ �...

mire varios foros y dice que cambie el charset y eso.. pero si pongo ISO-8859-1 en mi web.. me soluciona el buscador pero me cambia los acentos del resto de la pagina...y si pongo UTF-8 no me salen las ñ y los acentos en el buscador... alguna idea para solucionarlo?

Dejo el link de la pagina de pruebas para que vean el buscador...

http://frikigame.tk/index.html

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" >
<title>Buscador</title>
<div style="border:silver 1px solid;background-color:white;" >
<script language="JavaScript" src="buscar.js"></script>
<script language="JavaScript" src="db.js"></script>
<script language="JavaScript">
    initXsearch();
</script>
</div>
<body>
</body>
</head>
</html>

Yo necesito que el meta sea UTF-8 porque sino me cambia los acentos y las cosas del resto de la pagina...
es decir, solucionar solo el buscador!

Su ayuda sera de gran utilidad! Saludos

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola xxsserma,

tu problema está en que el archivo db.js se devuelve codificado con el juego de caracteres windows-1252, y al estar el resto de la página definida en UTF-8, se ven mal los acentos.

Podés ver la codificación invocando a http://frikigame.tk/db.js y viendo las propiedades de la página con el navegador.

Lo que tenés que hacer es conseguir que el servidor envíe db.js con el juego de caracteres UTF-8, así todo queda con la misma codificación. Tendrías que preguntarle al servicio de hosting sobre cómo hacer esto.

Alternativamente, si el servidor ejecuta PHP, podrías directamente enviar el archivo db.js codificado como UTF-8 haciendo lo siguiente:

  • Creá un archivo llamado dbjs.php
  • Poné al principio del archivo:

    <?php header('Content-type:application/javascript ; charset=utf-8'); ?>

  • Poné luego de esta línea el contenido de db.js sin cambios.
  • Cambiá la llamada al JavaScript para que sea:

...

<script language="JavaScript" src="buscar.js"></script>
<script language="JavaScript" src="dbjs.php"></script>

...

De esta forma, al transmitir le código JS diciéndole al navegador que lo interprete como UTF-8 deberías tener todo en el mismo juego de caracteres.

Por otra parte, si db.js está leyendo datos de una DB, deberías ver que los datos en la propia DB estén en UTF-8 y que la conexión con la misma también sea en UTF-8. De nada sirve tener todo el código en un juego de caracteres si luego el almacenamiento está en otro...

Adicionalmente, el código en JavaScript que generás para el buscadro está dadndo un error de "arbol desbalanceado", lo qeu significa que estás abriendo o cerrando un tag html mal. No influye en la codificación pero estaría bueno corregirlo. De paso te pregunto: por qué generás la cajita de búsqueda con document.write() en JavaScript en vez de e4scribirla directamente en HTML, que es mucho más simple y fácil de depurar???

Saludos cordiales

0voto

Leonardo-Tadei comentado

Ahora la codificación de los JS es correcta!

Con qué palabra estás probando?
Yo busco "hola" y los mensajes de no encontrado aparecen bien y busco google y aparece el texto y los enlaces bien.

0voto

xxsserma comentado

Con la palabra "niño" y "Papá" y aparecen los errores :l

son las caracteres especiales los que no toma...

0voto

Leonardo-Tadei comentado

Ya veo: tu problema está en que el eco que hace el código de la palabra de búsqueda vuelve mal codificado. Si te fijás en el URL los parámetros que se envían, "niño" y "Papá" se ven bien codificados.

Esto es porque el código del buscador en JavaScript está cambiado la codificación, o no la está decodificando desde el URL.

Tenés varias opciones para decodificar los caracteres recibidos vía el URL por GET:
http://www.w3schools.com/jsref/jsref_decodeuri.asp
http://stackoverflow.com/questions/3431512/javascript-equivalent-to-phps-urldecode

Para esto tenés que modificar el comportamiento del código del buscador en JavaScript, ya que quien lo escribió no pensó en caracteres acentuados o eñes... lo típico del código escrito por angloparlantes.

Para esta modificación, te sugiero analizar bien el código del buscador, de paso corregirle las cosas que tiene mal y las innecesarias y si tenés dudas, abrir una nueva pregunta específica sobre esta cuestión.

Ahora que todo el JS y el HTML llega al navegador correctamente como UTF-8, el problema ya no es de codificación, sino del propio algoritmo.

Saludos cordiales!

0voto

xxsserma comentado

Okey muchas gracias! intentare areglarlo... aver como me va..

saludos!

0voto

xxsserma comentado

Okey muchas gracias! intentare areglarlo... aver como me va..

saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta