Página 1 de 1

Problemas con Text::Unidecode en codificación

NotaPublicado: 2012-03-24 15:18 @679
por ocrum2004
Hola,

Estoy teniendo un problema que no encuentro la forma de solucionar por muchas pruebas y variaciones que hago.

El objetivo es leer una URL en japonés y luego convertirla a Unicode.

Parte del código que utilizo es:

use Text::Unidecode;
use utf8;
use LWP::Simple;
$data = get("http://www.baidu.jp"); // La página se encuentra en UTF-8
$data = unidecode($data);

El resultado no es el correcto, pero si copio el código de ese dominio directamente en una cadena sí que funciona. ¿Problemas de codificación al usar get()?

Por ejemplo, esto sí que funciona:

$data="<html> ...</html>"; y luego si hago el unidecode() sí que funciona.

Gracias,

Re: Problemas con Text::Unidecode en codificación

NotaPublicado: 2012-03-24 15:33 @689
por explorer
Bienvenido a los foros de Perl en Español, ocrum2004.

Unas consideraciones iniciales...

Una URL no puede estar escrita en japonés salvo que sea un IDN. Y en ese caso, tendrá su correspondiente traducción a latin1 normal.

¿No querrás decir que quieres leer un texto que está en esa página, en japonés?

El módulo Text::Unidecode está sin actualizar desde el 2001. Quizás fuera mejor que usaras el módulo Encode o las funciones internas utf8::encode() (las tendrás disponibles según la versión de Perl que estés usando).

He probado a bajarme la página, y en efecto, está en utf8. Solo quedaría decodificarla:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Encode;
  2. use LWP::Simple;
  3. $data = get("http://www.baidu.jp"); # La página se encuentra en UTF-8
  4.  
  5. $data = decode_utf8($data);
  6.  
  7. print $data;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Cuando pones la cadena en el propio programa, Perl ya sabe que está en utf8 (por el efecto del 'use utf8;') pero cuando lo lee con el get(), no lo sabe. Por eso hay que decodificarlo.

Re: Problemas con Text::Unidecode en codificación

NotaPublicado: 2012-03-24 15:42 @696
por ocrum2004
Muchas gracias por la pronta respuesta, estoy toda la tarde con este problema y lo he solucionado con tus indicaciones. El texto en japonés era el interno, no la URL, como has deducido.

Faltaba el decode_utf8() como me has indicado.

Acabo de descubrir este foro y espero poder ayudar en lo que pueda.

Gracias de nuevo.