Foros del Web » Programación para mayores de 30 ;) » Java »

Leer codigo fuente de una URL con la codificación correcta

Estas en el tema de Leer codigo fuente de una URL con la codificación correcta en el foro de Java en Foros del Web. Hola! Bueno estoy extrayendo un código fuente de una web, el problema que hay 2 partes en la misma web cada una en un idioma, ...
  #1 (permalink)  
Antiguo 15/04/2012, 04:35
 
Fecha de Ingreso: julio-2009
Mensajes: 103
Antigüedad: 15 años, 4 meses
Puntos: 1
Pregunta Leer codigo fuente de una URL con la codificación correcta

Hola! Bueno estoy extrayendo un código fuente de una web, el problema que hay 2 partes en la misma web cada una en un idioma, la cuestión es que cuando extraigo la parte española, recibe las típicas Ãi, etc.. en vez de los carácteres correctos (tíldes y ñ's)

El código que uso para leer la url es este:
Código:
public class leerURL {
	private String codigo;
	
	public leerURL(String sitioweb) throws IOException{
		try {
			java.net.URL url = new java.net.URL(sitioweb);
			java.net.URLConnection con = url.openConnection();
			InputStream s = con.getInputStream();
			
			BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(s));
			codigo = "";
			String line = "";
			while((line = bufferedReader.readLine())!=null){
				codigo+=line+"\n";
				//System.out.println(line);
			}
		} catch (java.net.MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public String getCodigo(){
		return codigo;
	}
}
  #2 (permalink)  
Antiguo 15/04/2012, 05:59
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Leer codigo fuente de una URL con la codificación correcta

Hola:

Tienes que mirar en la cabecera de la web cual es la codificación de los caracteres (algo como <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ) y usar ese mismo encoding en el fichero donde vayas a guardar la web o en el sitio en que quieras mostrarla (pantalla, etc).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 15/04/2012, 08:15
 
Fecha de Ingreso: julio-2009
Mensajes: 103
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Leer codigo fuente de una URL con la codificación correcta

He probado algunas cosillas y no consigo hacerlo, lo que estoy haciendo es meter el texto que necesito en un Mapa (extraigo clave,valor) y luego creo una JList con eso, la cosa que cuando recibo el código (el charset de la página es utf-8) hago esto:
Código:
String source = paginaEdiciones.getCodigo();
byte[] b = source.getBytes("UTF-8");
String codigo = new String(b,"UTF-8");
Algunas cosas parecidas he estado probando leyendo por ahí, pero no se como hacerlo de manera que pueda pasar "source" (con los caracteres extraños) a codigo (sin ellos)

Alguna sugerencia?
  #4 (permalink)  
Antiguo 15/04/2012, 10:16
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Leer codigo fuente de una URL con la codificación correcta

Si source es lo que lees de la página y ya está en String, posiblemente esté mal desde ahí, de hecho, el problema posiblemente esté aquí bufferedReader.readLine() ya que ya lo está convirtiendo a un String con la codificación por defecto de tu sistema. Intenta en vez de leer String, leer los bytes para luego convertirlos a caracter con algo como lo que estás haciendo después.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: encoding, source, tildes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:43.