Gå til innhold

Sliter med æøå via Perl-script


Anbefalte innlegg

Jeg benytter et Perl-script for å grabbe linker på websider. Problemet er i de tilfellene der det er andre tegn enn standard engelske tegn i titlene på linkene, og spesielt der det er "æøå" med.

 

Det jeg synes er snodig er at noen linker vil gjengi æøå mens andre ser slik ut:

- - Vi frykter bråk

- Jeg møtte veggen

- Sør-Arena var et pengesluk

- - Håper Lillestrøm får ut fingeren

- Færre innlegg er bedre

 

Men det ser ut til at alle link-titlene på en site gjengir alle forekomster av æøå riktig eller alle feil.

 

Noen som vet hva dette kommer av og hva jeg kan gjøre med det?

Er dette noe som er relatert til enkodingen på html-siden jeg besøker, noe som mangler i Perl-scriptet eller er det rett og slett konfigurering på min Linux Fedora maskin som mangler. Har prøvd å redigere i i18n-filen under /etc/sysconfig, men har ikke klart å endre resultatet.

 

Perl-scriptet bruker følgende moduler :

use Getopt::Long;

use LWP;

use LWP::RobotUA;

use MD5;

use strict;

use URI::URL;

Endret av oladunken
Lenke til kommentar
Videoannonse
Annonse

husker ikke helt hvordan det ble skrevet, ettersom jeg er på jobb. Men du må si til scriptet at det skal bruke utf8 om det er det du bruker som tegnsett på fedora maskinen din.

Om du har locale nb_NO.utf8 eller noe på fedora maskinen, så må du si til scriptet at det skal bruke utf8 også. Husker ikke hvordan dette ble gjort.

 

for å se hvilket tegnsett som blir brukt på maskinen, åpne terminal og skriv locale

Lenke til kommentar
  • 1 måned senere...

Char	  Ascii	 Hex	   Binary
S		 83		53		01010011
Ã		 195	   c3		11000011
¸		 184	   b8		10111000
r		 114	   72		01110010
-		 45		2d		00101101
A		 65		41		01000001
r		 114	   72		01110010
e		 101	   65		01100101
n		 110	   6e		01101110
a		 97		61		01100001

Vi ser at "ø" er representert av to byte chars, 0xc3 og 0xb8. Dette er utf8 encoding av ø (dvs \xF8):

my $char = "\xF8";

$char = Encode::encode( 'utf8', $char );

 

Vi har altså utf8 data som ikke er blitt tolket korrekt.

 

For å tvinge perl til å tolke data som utf8:

$data = Encode::decode( 'utf8', $data );

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...