Ver la versión completa : Ayuda con Java! Problema con acentos al generar archivo HTML
neostalker
23/11/2011, 22:10
Estoy haciendo un programa que en cierto momento general un archivo html que es visualizado por el navegador web por defecto, pero no soy capaz de hacer que se vean las letras acentuadas. El código de la página empieza así:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es-ES">
Y en Java utilizo este código para crear el archivo html:
try{
fw = new FileWriter(ruta);
pw = new PrintWriter(fw);
pw.print(codHTML);
this.d.open(new File(ruta));
}catch (Exception e){
}finally{
try {
//cerramos el fichero
if(fw != null) fw.close();
}catch (Exception e2){}
}
También he utilizado esta otra manera, pero el resultado es el mismo:
try{
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(ruta), "utf-8"));
pw.write(codHTML_cabecera);
this.d.open(new File(ruta));
}catch (Exception e){
}finally{
try {
//cerramos el fichero
if(out != null) out.close();
}catch (Exception e2){}
}
La gracia es si abro el archivo generado con el bloc de notas y guardo el contenido tal cual está, al abrirlo se ve bien! xD
Alguien sabe como solucionarlo? [wei2]
^MiSaTo^
23/11/2011, 22:16
Cómo es ese HTML? Supongo que estás usando los á y demás no?
Cómo es ese HTML? Supongo que estás usando los á y demás no?
Si usa utf-8 no deberia de ser necesario, es raro, tengo aqui archivos con ese formato de codificacio nde caracteres y si me muestran los caracteres :S
^MiSaTo^
23/11/2011, 22:22
Si usa utf-8 no deberia de ser necesario, es raro, tengo aqui archivos con ese formato de codificacio nde caracteres y si me muestran los caracteres :S
Yo SIEMPRE uso á y demás. Da igual el encoding, si no lo usas al final a veces hace cosas raras.
^ Este es un problema que se produjo también en una de mis paginas hace tiempo. Se pasaba el encoding por el forro... polar xD
neostalker
23/11/2011, 22:43
Yo SIEMPRE uso á y demás. Da igual el encoding, si no lo usas al final a veces hace cosas raras.
No tengo ni idea de que es á, mis conocimientos de html son limitados, pero buscaré algún tutorial o algo a ver si aprendo a usarlo :)
á es interpretado como si fuese un comando. Simplemente lo pones donde iba la 'á'.
$MSG['682'] = "Repetir pasos 1. y 2. para cada foto. Cuando termines haz clic en el botón <i>Crear Galería</i> que hay a continuación. <br> Despues de que subas la primera imagen o selecciones una de las imagenes como la imagen predeterminada, podrás crear una imagen en miniatura seleccionando una parte la misma. Dicha imagen es la que aparecerá en los resultados de búsqueda.";
neostalker
23/11/2011, 22:59
á es interpretado como si fuese un comando. Simplemente lo pones donde iba la 'á'.
Ah, o sea, que para cada vocal hay que precederla de '&' y acompañarla de 'acute;'.
Muchas gracias a todos! :brindis:
< - >
Ajá, aquí veo las diversas equivalencias que hay! http://www.psicobyte.com/html/curso/html6.html
Yo SIEMPRE uso á y demás. Da igual el encoding, si no lo usas al final a veces hace cosas raras.
Yo nunca he tenido problemas, pero no vale con indicar que la codificacion del xml es utf8, sino que el fichero tb tiene que ir en dicho formato.
De esa forma solucionamos algun que otro problema, y asi no teniamos que tener la tabla ascii delante para meter mil caracteres raros que necesitabamos y fallaban.
Por otro lado mi experiencia es mucho mas limitada que la tuya, y fue una solucion rapida a unos problemas puntuales xD
Estopero
23/11/2011, 23:19
Yo soy más de tirar por utf-8 también la verdad XD
Prueba (además de todo lo que tienes ya) a meter la etiqueta:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Dentro del <head> =))
neostalker
23/11/2011, 23:26
Yo soy más de tirar por utf-8 también la verdad XD
Prueba (además de todo lo que tienes ya) a meter la etiqueta:
Dentro del <head> =))
Mucho más sencillo así! Me funciona perfectamente!
Os quiero, famigos!!! :brindis::brindis::brindis:
La cosa es que depende mucho del script en si, los hay que se lo pasan por el forro, pero si el script es tuyo y lo has hecho bien, deberían de funcionar ambos métodos :)
neostalker
23/11/2011, 23:31
La cosa es que depende mucho del script en si, los hay que se lo pasan por el forro, pero si el script es tuyo y lo has hecho bien, deberían de funcionar ambos métodos :)
Funcionan ambos, había implementado primero el de los á :)
akualung
24/11/2011, 02:05
Ah, o sea, que para cada vocal hay que precederla de '&' y acompañarla de 'acute;'.
Muchas gracias a todos! :brindis:
< - >
Ajá, aquí veo las diversas equivalencias que hay! http://www.psicobyte.com/html/curso/html6.html
Bueno, eso para las letras acentuadas. A eso se les llama "entidades html" Luego hay más, como por ejemplo "$ccedil;" para la "ce trencada" del catalán o el francés, "ñ" para la eñe, "©" para el signo del copyright, etc, etc.
Tienes un montonazo, escribes en google "html entities" y tienes páginas a patadas con explicaciones sobre ellas y la lista completa.
Por cierto, para hacer lo que pretendes (si es que lo he entendido bien), sin salir de java, ¿no seria mejor hacer un servlet e ir printando las lineas del documento en el objeto httpResponse, el cual lo enviará todo al navegador? Siento si no me he explicado del todo bien, pero es que hace la tira que no programo servlets, pero sé que había que coger el httpResponse, extraer su writer, y ahí printar todo lo que queramos que vaya al navegador.
Aqui he encontrado un pequeño ejemplo, que me explico de pena a estas horas:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SomeServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Use "request" to read incoming HTTP headers (e.g. cookies)
// and HTML form data (e.g. data the user entered and submitted)
// Use "response" to specify the HTTP response line and headers
// (e.g. specifying the content type, setting cookies).
PrintWriter out = response.getWriter();
// Use "out" to send content to browser
}
}
neostalker
24/11/2011, 02:52
Pues me ha pasado una cosa graciosa!
Resulta, que el método de Estopero solo me funciona cuando utilizo el programa desde ejecutando el programa desde Netbeans, pero si compilo y ejecuto la versión convencional, al visualizar el la página me aparece el típico rombito con un signo de interrogación dentro donde deberían estar las vocales con acentos. Por suerte, el método de las html entities sí funciona bien.
Akualung, seguramente hacerlo con un servlet sea lo más limpio, por aquello de que no genera un html físico. Tengo que echarle un ojo con detenimiento, porque no estoy muy puesto en servlets. Mañana lo veo ;)
^MiSaTo^
24/11/2011, 08:09
Pues me ha pasado una cosa graciosa!
Resulta, que el método de Estopero solo me funciona cuando utilizo el programa desde ejecutando el programa desde Netbeans, pero si compilo y ejecuto la versión convencional, al visualizar el la página me aparece el típico rombito con un signo de interrogación dentro donde deberían estar las vocales con acentos. Por suerte, el método de las html entities sí funciona bien.
Akualung, seguramente hacerlo con un servlet sea lo más limpio, por aquello de que no genera un html físico. Tengo que echarle un ojo con detenimiento, porque no estoy muy puesto en servlets. Mañana lo veo ;)
Qué es lo que quieres hacer exactamente?
Y en serio os recomiendo que useis las html entities, que los encoding son muy porculeros ;)
PD: A día de hoy se siguen usando servlets??? O_O
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.