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

Capturar Codificación de Caracteres

Estas en el tema de Capturar Codificación de Caracteres en el foro de Programación General en Foros del Web. Buenas, tengo una consulta sobre la captura de la codificación de caracteres (se que el titulo no dice nada).... Me explico: Tengo un sistema RSS ...
  #1 (permalink)  
Antiguo 06/03/2007, 12:55
Avatar de Saulinux  
Fecha de Ingreso: agosto-2005
Mensajes: 43
Antigüedad: 19 años, 3 meses
Puntos: 0
Sonrisa Capturar Codificación de Caracteres

Buenas, tengo una consulta sobre la captura de la codificación de caracteres (se que el titulo no dice nada).... Me explico:
Tengo un sistema RSS que trabaja digamos bien, a través de este sistema tambien puedo añadir otros RSS de otras webs y jalar o copiar las noticias que me interesan y añadirlos a mi RSS. (hasta aqui todo bien sin problemas).

Me surgio un problema cuando añadi un RSS de otra web codificado con UTF-8, ya que mi RSS esta codificado con ISO-8859-1 (buscando vi que hay rss codificados tanto en uno como en otro sistema). Como comprenderan al añadir este Rss codificado con UTF-8 me salen caracteres ilegibles.....

Mi consulta es si puedo a través de un parseador (y como) obtener la codificación que tiene el rss??? para que a través de este dato yo genere o añada un item con esa codificación....
Espero haber sido claro, gracias de antemano.
__________________
Siempre o casi siempre, las cosas que piensas que nunca se acaban son las primeras en desaparecer.....
  #2 (permalink)  
Antiguo 07/03/2007, 05:51
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Re: Capturar Codificación de Caracteres

Generalmente en la primera línea del RSS estña la codificación que lleva...Puedes leerlo de ahí...

Como es tu sistema que lee RSS ? está programado a mano ?

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 07/03/2007, 13:05
Avatar de Saulinux  
Fecha de Ingreso: agosto-2005
Mensajes: 43
Antigüedad: 19 años, 3 meses
Puntos: 0
Re: Capturar Codificación de Caracteres

Este es el codigo que uso para leer un archivo RSS:
Pero esta por defecto para leer ISO-8859-1, digo esto por la función xml_parser_create(); lo que quisiera es obtener en una variable $encodifica el codigo que utiliza cada rss que abro.....
Cita:
<?php
/* PHP RSS Reader v1.1
By Richard James Kendall
Bugs to [email protected]
Free to use, please acknowledge me

Place the URL of an RSS feed in the $file variable.

The $rss_channel array will be filled with data from the feed,
every RSS feed is different by by and large it should contain:

Array {
[TITLE] = feed title
[DESCRIPTION] = feed description
[LINK] = link to their website

[IMAGE] = Array {
[URL] = url of image
[DESCRIPTION] = alt text of image
}

[ITEMS] = Array {
[0] = Array {
[TITLE] = item title
[DESCRIPTION] = item description
[LINK = a link to the story
}
.
.
.
}
}

By default it retrives the Reuters Oddly Enough RSS feed. The data is put into the array
structure so you can format the information as you see fit.
*/
set_time_limit(0);

$file = "http://www.la-razon.com/rss.xml";

$rss_channel = array();
$currently_writing = "";
$main = "";
$item_counter = 0;

function startElement($parser, $name, $attrs) {
global $rss_channel, $currently_writing, $main;
switch($name) {
case "RSS":
case "RDF:RDF":
case "ITEMS":
$currently_writing = "";
break;
case "CHANNEL":
$main = "CHANNEL";
break;
case "IMAGE":
$main = "IMAGE";
$rss_channel["IMAGE"] = array();
break;
case "ITEM":
$main = "ITEMS";
break;
default:
$currently_writing = $name;
break;
}
}

function endElement($parser, $name) {
global $rss_channel, $currently_writing, $item_counter;
$currently_writing = "";
if ($name == "ITEM") {
$item_counter++;
}
}

function characterData($parser, $data) {
global $rss_channel, $currently_writing, $main, $item_counter;
if ($currently_writing != "") {
switch($main) {
case "CHANNEL":
if (isset($rss_channel[$currently_writing])) {
$rss_channel[$currently_writing] .= $data;
} else {
$rss_channel[$currently_writing] = $data;
}
break;
case "IMAGE":
if (isset($rss_channel[$main][$currently_writing])) {
$rss_channel[$main][$currently_writing] .= $data;
} else {
$rss_channel[$main][$currently_writing] = $data;
}
break;
case "ITEMS":
if (isset($rss_channel[$main][$item_counter][$currently_writing])) {
$rss_channel[$main][$item_counter][$currently_writing] .= $data;
} else {
//print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");
$rss_channel[$main][$item_counter][$currently_writing] = $data;
}
break;
}
}
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);

// output as HTML
print ("<html><head><title>PHP RSS Reader</title></head><body>");
if (isset($rss_channel["IMAGE"])) {
print ("<a href=\"" . $rss_channel["LINK"] . "\" target=\"_blank\"><img border=\"0\" src=\"" . $rss_channel["IMAGE"]["URL"] . "\" align=\"middle\" alt=\"" . $rss_channel["IMAGE"]["TITLE"] . "\"></a>&nbsp;&nbsp;<font size=\"5\">" . $rss_channel["TITLE"] . "</font><br><br>");
} else {
print ("<font size=\"5\">" . $rss_channel["TITLE"] . "</font><br><br>");
}
print ("<i>" . $rss_channel["DESCRIPTION"] . "</i><br><br>");
if (isset($rss_channel["ITEMS"])) {
if (count($rss_channel["ITEMS"]) > 0) {
for($i = 0;$i < count($rss_channel["ITEMS"]);$i++) {
print ("\n<table width=\"100%\" border=\"1\"><tr><td width=\"100%\"><a href=\"" . $rss_channel["ITEMS"][$i]["LINK"] . "\" target=\"_blank\"><h2>" . $rss_channel["ITEMS"][$i]["TITLE"] . "</h2></a></b>");
print ("<i>" . html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]) . "</i>");
print ("</td></tr></table><br>");
}
} else {
print ("<b>There are no articles in this feed.</b>");
}
}
print ("</body></html>");
?>
__________________
Siempre o casi siempre, las cosas que piensas que nunca se acaban son las primeras en desaparecer.....
  #4 (permalink)  
Antiguo 30/05/2007, 17:25
 
Fecha de Ingreso: enero-2005
Mensajes: 2
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Capturar Codificación de Caracteres

Usa esto, a mi me sirvió...

$feedReader=xml_parser_create();
xml_set_object($this->feedReader,$this);
xml_parser_set_option($feedReader,XML_OPTION_CASE_ FOLDING,true);
xml_parser_set_option($feedReader,XML_OPTION_TARGE T_ENCODING,"ISO-8859-1");
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 15:35.