Íslenskir stafir í Perl?

Skjámynd

Höfundur
ManiO
Besserwisser
Póstar: 3963
Skráði sig: Fim 08. Jún 2006 18:40
Reputation: 0
Staðsetning: Seltjarnarnes
Staða: Ótengdur

Íslenskir stafir í Perl?

Pósturaf ManiO » Fös 20. Maí 2011 10:29

Sælir,

Er að lenda í veseni með íslenska stafi í Perl. Er að reyna að skeyta saman strengjum, upphafið er bara eðlileg byrjun á urli, í miðjunni er svo orð sem getur innihaldið íslenska stafi, og endar strengurinn á restinni af urlinu (er sem sagt að keyra orð í gegnum fallbeyginguna á bin.arnastofnun.is). Ekki vill svo heppilega til að til sé einhver sleggju lausn sem að lætur þennan höfuðverk nánast hverfa?

use utf8; virkar ekki (gefur autt pláss í stað íslensks stafs)
Ef ég geri ekkert í encoding þá fæ ég punkt sem er fyrir miðju á hæð og frekar langt til hægri (ekki hugmynd hvaða character þetta er).

Kv.
ManiO.


"Knowledge is knowing that a tomato is a fruit,
wisdom is knowing not to put one in a fruit salad."

Skjámynd

Daz
Besserwisser
Póstar: 3835
Skráði sig: Sun 20. Okt 2002 09:35
Reputation: 157
Staðsetning: Somewhere something went horribly wrong
Staða: Ótengdur

Re: Íslenskir stafir í Perl?

Pósturaf Daz » Fös 20. Maí 2011 10:36

encoding ISO-8859-1?



Skjámynd

Höfundur
ManiO
Besserwisser
Póstar: 3963
Skráði sig: Fim 08. Jún 2006 18:40
Reputation: 0
Staðsetning: Seltjarnarnes
Staða: Ótengdur

Re: Íslenskir stafir í Perl?

Pósturaf ManiO » Fös 20. Maí 2011 10:39

Ég verð bara að viðurkenna að ég er engan veginn nægilega fróður um alla þessa staðla sem eru í gangi.

chcp skipunin í cmd t.d. gefur mér 850 sem ég hef ekki grænan grun um hvað er. (user input gefur mér reyndar réttar niðurstöður)

Notepad++ er stilltur á UTF-8.


"Knowledge is knowing that a tomato is a fruit,

wisdom is knowing not to put one in a fruit salad."

Skjámynd

Daz
Besserwisser
Póstar: 3835
Skráði sig: Sun 20. Okt 2002 09:35
Reputation: 157
Staðsetning: Somewhere something went horribly wrong
Staða: Ótengdur

Re: Íslenskir stafir í Perl?

Pósturaf Daz » Fös 20. Maí 2011 10:52

850 er codepage (sem maður notaði í DOS). 861 var íslenska code pageið. Ættir að geta googlað eitthvað um codepage. Geturðu ekki látið pearl outputa í hvaða encoding það er, er það ekki global breyta? Í java þarf að breyta þessu í startup fyrir VMið, ekki hægt að gera í runtime. Minnir mig.

Þarftu ekki annars að encoda strenginn sem kemur úr vefþjónustunni? Mér þykir líklegt að hann sé að koma í öðru encoding en strengurinn sem þú ert að smíða í skriptunni og þegar þú límir þá saman færðu "óvæntar" niðurstöður. Eru ekki til einhver föll í pearl sem skila encoding á strengjum?



Skjámynd

Höfundur
ManiO
Besserwisser
Póstar: 3963
Skráði sig: Fim 08. Jún 2006 18:40
Reputation: 0
Staðsetning: Seltjarnarnes
Staða: Ótengdur

Re: Íslenskir stafir í Perl?

Pósturaf ManiO » Fös 20. Maí 2011 14:47

Fann einhverja allra mestu shit-mix lausn.

Hafa eftirfarandi í hausnum á kóðanum,

Kóði: Velja allt

use utf8;
use Encode qw(decode HTMLCREF);
use URI;


Svo ef að lesa á inn íslenska stafi, setja það í txt file, lesa hann svo inn [í mínu tilfelli er þetta eitt orð],

Kóði: Velja allt

open FILE, "<gata.txt";
chomp($ord = do { local $/; <FILE> });


Svo til að fá nothæfa stafi fyrir url,

Kóði: Velja allt

#skeytir saman urlinu
$slod = $upphaf . $ord . $endir;
$slod=decode('iso-8859-1', $slod, HTMLCREF);

$url = URI->new("$slod");



Þetta er fáránlega ljótt, en er búið að redda mér.


"Knowledge is knowing that a tomato is a fruit,

wisdom is knowing not to put one in a fruit salad."

Skjámynd

Daz
Besserwisser
Póstar: 3835
Skráði sig: Sun 20. Okt 2002 09:35
Reputation: 157
Staðsetning: Somewhere something went horribly wrong
Staða: Ótengdur

Re: Íslenskir stafir í Perl?

Pósturaf Daz » Fös 20. Maí 2011 14:57

Er ekki nóg að decode-a bara þann part sem þú sækir með vefþjónustunni? Ekki að það breyti neinu, þú finnnur líklega aldrei neina elegant lausn í svona textafimleikum. Nema að þú getur neytt vefþjónustuna til að skila streng í ákveðnum formi, hjúpa hana með einhverjum decode kóða?



Skjámynd

Höfundur
ManiO
Besserwisser
Póstar: 3963
Skráði sig: Fim 08. Jún 2006 18:40
Reputation: 0
Staðsetning: Seltjarnarnes
Staða: Ótengdur

Re: Íslenskir stafir í Perl?

Pósturaf ManiO » Fös 20. Maí 2011 15:25

Daz skrifaði:Er ekki nóg að decode-a bara þann part sem þú sækir með vefþjónustunni? Ekki að það breyti neinu, þú finnnur líklega aldrei neina elegant lausn í svona textafimleikum. Nema að þú getur neytt vefþjónustuna til að skila streng í ákveðnum formi, hjúpa hana með einhverjum decode kóða?



Nenni ekki að pæla of mikið í þessu. Þetta virkar hingað til, ef ég rek mig á vesen seinna þá pæli ég betur í þessu.


"Knowledge is knowing that a tomato is a fruit,

wisdom is knowing not to put one in a fruit salad."


starionturbo
Gúrú
Póstar: 542
Skráði sig: Mán 24. Des 2007 11:23
Reputation: 8
Staðsetning: localhost
Staða: Ótengdur

Re: Íslenskir stafir í Perl?

Pósturaf starionturbo » Fös 20. Maí 2011 16:07

Vefþjónustur eiga náttúrulega bara að vera í UTF-8 nema þær bjóði uppá mörg encoding.


Foobar