Síða 1 af 1

Íslenskir stafir í Perl?

Sent: Fös 20. Maí 2011 10:29
af ManiO
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.

Re: Íslenskir stafir í Perl?

Sent: Fös 20. Maí 2011 10:36
af Daz
encoding ISO-8859-1?

Re: Íslenskir stafir í Perl?

Sent: Fös 20. Maí 2011 10:39
af ManiO
É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.

Re: Íslenskir stafir í Perl?

Sent: Fös 20. Maí 2011 10:52
af Daz
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?

Re: Íslenskir stafir í Perl?

Sent: Fös 20. Maí 2011 14:47
af ManiO
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.

Re: Íslenskir stafir í Perl?

Sent: Fös 20. Maí 2011 14:57
af Daz
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?

Re: Íslenskir stafir í Perl?

Sent: Fös 20. Maí 2011 15:25
af ManiO
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.

Re: Íslenskir stafir í Perl?

Sent: Fös 20. Maí 2011 16:07
af starionturbo
Vefþjónustur eiga náttúrulega bara að vera í UTF-8 nema þær bjóði uppá mörg encoding.