Sida 1 av 1

iso-8859-1 i datafiler och utf-8 i källkoden för Perl

Postat: 31 aug 2007, 11:08
av dlridings
Ok,

Man har UTF-8. Whoopie, cool, dig-it.

Men vad hjälper det när så mycket data finns i iso-8859-1?

I Python kan jag göra min uppgift lätt. Jag hoppades det skulle gå i Perl.

Jag vill använda åäö i ett regulärt uttryck.

När jag skriver källkod, blir det åäö i UTF-8

Men den datamängde som perl ska köras mot är i iso-8859-1.

Så jag kan aldrig få träffa genom att söka UTF i en iso-datamängd.

Aha, Perl har säkert något som Pythons codecs och encoding.

Jag tester:

use Encode 'decode';

och sedan:

$data = decode("iso-8859-1", $_);

Inte konverteras iso till utf, inte.

Det händer ingenting.

Tips?

Daniel

SV: iso-8859-1 i datafiler och utf-8 i källkoden för Perl

Postat: 31 aug 2007, 15:36
av dlridings
Jag trodde väl det.

Det är egentligen inte möjligt att utveckla program på ubuntu som kör med UTF-8.

Den enda lösning jag kan komma på är att boota om till Windows och kör via MSDOS prompt. Vem hade trott?!

Daniel

SV: iso-8859-1 i datafiler och utf-8 i källkoden för Perl

Postat: 31 aug 2007, 15:45
av Barre
dlridings skrev: Jag trodde väl det.

Det är egentligen inte möjligt att utveckla program på ubuntu som kör med UTF-8.
Klart att det går :)

Du skrev ju själv att du lyckades i Python, men inte i perl.. så uppenbarligen går det.
Att du inte kan är inte samma sak som att det är omöjligt!

Och ha lite tålamod, snart kanske det dyker upp en perl-kunnig person som kan hjälpa dig.
Under tiden kanske du kan prova på perl-relaterade forum

Här är några exempel på såna forum:
http://perlguru.com/
http://www.tek-tips.com/threadminder.cfm?pid=219
http://perl.lco.net/Forums/tabid/277/Default.aspx
http://www.thescripts.com/forum/forum150.html

SV: iso-8859-1 i datafiler och utf-8 i källkoden för Perl

Postat: 31 aug 2007, 16:27
av dlridings
Jag hittade ett annat sätt.

Linux är inte UTF-8 mogen ännu. Det märks ibland.

Vi (editorn jag föredrar) använder UTF-8.

Då var det omöjligt.

Efter det att jag körde i Windows, bootade jag tillbaka till Linux för att jag glömde en script. Då slog det mig ... Emacs är ganska (fill-in-the-blank) ... och mycket riktigt, emacs använder ISO-8859-1 default.

Då kunde jag skriva om det regulära uttrycket med emacs för att bli av med UTF-8 och det fungerade.

Datamängden är fortfarande iso-8859-1 även som resultet, men det ville jag också. UTF-8 är inte så användbar ännu.

Daniel

SV: iso-8859-1 i datafiler och utf-8 i källkoden för Perl

Postat: 31 aug 2007, 17:21
av DrMegahertz
Vi befinner oss i en övergångsfas då utf-8 börjar stödjas i fler och fler applikationer(vilket är en mycket bra sak) och då får man helt enkelt räkna med att det kan bli lite strul med sin gamla data som är kodad i ett annat format.

SV: iso-8859-1 i datafiler och utf-8 i källkoden för Perl

Postat: 31 aug 2007, 18:25
av gasol
ställ om din terminal du kodar i till ISO-8859-1 skriv koden och kör...

SV: iso-8859-1 i datafiler och utf-8 i källkoden för Perl

Postat: 31 aug 2007, 21:17
av dlridings
gasol skrev: ställ om din terminal du kodar i till ISO-8859-1 skriv koden och kör...
Och det gör man med ... stty? jag hittar inga flaggar i man-sidan.

SV: iso-8859-1 i datafiler och utf-8 i källkoden för Perl

Postat: 19 sep 2007, 16:48
av Daniel Nylander
Allt finns ju dokumenterat på http://perldoc.perl.org/Encode.html

$octets = encode("iso-8859-1", $string);
$string = decode("iso-8859-1", $octets);

Vill man konvertera allt sitt gamla data kan man använda iconv