Avatar billede christian_h Nybegynder
07. april 2002 - 22:15 Der er 14 kommentarer og
1 løsning

URL afkodning

Jeg har et problem med at få et javascript til at URL afkode LR + CR fra et <texrarea>, hvordan gør man det ?.
Bare for et eksempel viser jeg her hvordan dem der har lavet scriptet har oversat æ/ø/å/Æ/Ø/Å
<--udpluk af scripet-->
textneu=textneu.replace(/%E6/g, "æ");
textneu=textneu.replace(/%F8/g, "ø");
textneu=textneu.replace(/%E5/g, "å");
textneu=textneu.replace(/%C6/g, "Æ");
textneu=textneu.replace(/%C5/g, "Ø");
textneu=textneu.replace(/%D8/g, "Å");
<--udpluk slut-->

LR bliver i url´en sendt som  %0A
CR bliver i url´en sendt som  %0D

Hvordan får man det oversat til reelle linie skift ?.
Avatar billede hoejrup Nybegynder
07. april 2002 - 22:25 #1
Hvorfor skal du oversætte det til reelle linieskift?
Skal det ikke konverteres tilbage igen?

eks. textneu=textneu.replace(/æ/g, "%E6");

/per
Avatar billede jakoba Nybegynder
07. april 2002 - 23:14 #2
der er indbyggede funktioner til det der i java script:

var urlencoded = escape( "strengmed?# og andre sære tegn\nog linie\nskift" );
alert( urlencoded );
var normalstreng = unescape( urlencoded );
alert( normalstreng );

mvh JakobA
Avatar billede christian_h Nybegynder
08. april 2002 - 00:23 #3
til hoejrup.
Nej det skal ikke konverteres tilbage igen, den side som jeg skal bruge det på er en side som viser det man har indtastet på en form på "forgående" side, og herfra bliver det så sendt videre som en email via et cgi script.
Så det hele drejer sig om at få de linie skift afkodet fra url´en så de står rigtigt (og ikke som f.eks. linie1%0Alinie2%0D osv." på den side hvor de bliver vist.
Håber det giver et lidt klarer lyst over sagen.
Avatar billede jakoba Nybegynder
08. april 2002 - 00:34 #4
textneu = unescape( textneu );

fixer æ, ø, å, linieskift og alt mulig andet.
Avatar billede christian_h Nybegynder
09. april 2002 - 19:26 #5
Kan ikke få det til at virke, andre forslag ??, her kommer lige lidt mere af scriptet:

<SCRIPT LANGUAGE="JavaScript">
function URaus(text)//UR=UMLAUTE RAUS
{

textneu=text.replace(/%25/, "%");
textneu=textneu.replace(/%2F/, "/");
textneu=textneu.replace(/%E6/g, "æ");
textneu=textneu.replace(/%F8/g, "ø");
textneu=textneu.replace(/%E5/g, "å");
textneu=textneu.replace(/%C6/g, "Æ");
textneu=textneu.replace(/%C5/g, "Ø");
textneu=textneu.replace(/%D8/g, "Å");
textneu=textneu.replace(/%DF/g, "ss");
textneu=textneu.replace(/%40/g, "@");
textneu=textneu.replace(/%23/g, "#");
textneu = unescape( textneu );

return textneu;
}
function umw(art){
if (art=="Nachnahme") {back="Efterkrav"}
if (art=="Rechnung"){back="Regning"}
if (art=="Bankeinzug"){back="direct debit"}
if (art=="Kreditkarte"){back="kredit kort"}
if (art=="Vorkasse"){back="Forudbetaling"}

return back;
}

</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">

    cline=document.URL.split("?");
    katgew=cline[1].split("&");

    for (a=0;a<katgew.length;a++) {
        zuw=katgew[a].split("=");
        zuw[1]=zuw[1].replace(/\+/g," ");
        zuw[1]=zuw[1].replace(/%E6/g,"æ");
        zuw[1]=zuw[1].replace(/%F8/g,"ø");
        zuw[1]=zuw[1].replace(/%E5/g,"å");
        zuw[1]=zuw[1].replace(/%C6/g,"Æ");
        zuw[1]=zuw[1].replace(/%C5/g,"Ø");
        zuw[1]=zuw[1].replace(/%D8/g,"Å");
        zuw[1]=zuw[1].replace(/%DF/g,String.fromCharCode(223));
        zuw[1]=zuw[1].replace(/%2B/g,"+");
        zuw[1]=zuw[1].replace(/%25/g,"%");
        zuw[1]=zuw[1].replace(/%26/g,"&");
        zuw[1]=zuw[1].replace(/%2F/g,"/");
        zuw[1]=zuw[1].replace(/%40/g,"@");
        zuw[1]=zuw[1].replace(/%23/g,"#");
       
Håber at nogen kan hjælpe
Avatar billede jakoba Nybegynder
09. april 2002 - 22:06 #6
alt hvad der skulle være brug for er:

function URaus(text) //UR=UMLAUTE RAUS
{
    return unescape( text );
}

den erstatter ALLE ikke-normale tegn med deres %NN kode.

Hvis det ikke virker må de gerne fortælle hvordan det ikke virker, Hvad der evt kommer af fejlmeddelelser osv. så er det nemmere at debugge.

mvh JakobA
Avatar billede christian_h Nybegynder
10. april 2002 - 02:25 #7
Hej JakobA

Det er lige omvendt, jeg skal have den til at erstatte alle %NN koder med normale tegn.
Jeg har prøvet at indsætte din kode, og det bliver det ikke dårligere af, men den omsætter stadig ikke %0a og %0d til linie skift ??.

Kan du gennemskue hvad :
<SCRIPT LANGUAGE="JavaScript">

    cline=document.URL.split("?");
    katgew=cline[1].split("&");

    for (a=0;a<katgew.length;a++) {
        zuw=katgew[a].split("=");
        zuw[1]=zuw[1].replace(/\+/g," ");
        zuw[1]=zuw[1].replace(/%E6/g,"æ");
        zuw[1]=zuw[1].replace(/%F8/g,"ø");
        zuw osv. osv.

Bliver brugt til ?, så vidt jeg kan se, har den også noget med afkodningen at gøre, for hvis jeg tilføjer 2 liner som hedder :
zuw[1]=zuw[1].replace(/%0A/g," ");
zuw[1]=zuw[1].replace(/%0D/g," ");

Erstatter den %0A og %0D med "mellemrum" og desværre ikke LR og CR
Avatar billede jakoba Nybegynder
10. april 2002 - 09:01 #8
//starter med en url. fc  www.zum.de/?p1=%E6g&p2=p%E6rer&p3=%F8l"


    cline=document.URL.split("?"); 
    katgew=cline[1].split("&");

    for (a=0;a<katgew.length;a++) {
        zuw=katgew[a].split("=");
        zuw[1]=zuw[1].replace(/\+/g," ");
        zuw[1]=zuw[1].replace(/%E6/g,"æ");
        zuw[1]=zuw[1].replace(/%F8/g,"ø");
Avatar billede jakoba Nybegynder
10. april 2002 - 09:02 #9
Sorry. den skulle ikke have submittet der. glem ovenstående.
Avatar billede jakoba Nybegynder
10. april 2002 - 09:31 #10
brugeren klikker på et link på en helt anden side:
  <a href="www.zum.de/index.htlm?p1=%E6g&p2=p%E6rer&p3=%F8l">zum Zum</a>
og kommer til den side der ligger på:
          "www.zum.de/index.html"
Det der står fra ? og derefter er search parametre
i kiden i "www.zum.de/index.html" står den der kode

    cline=document.URL.split("?");      // del den anvendte linkadresse ved '?'
                    // .split( skilletegn ) deler strengen og returnerer et array
                    // cline[0] er nu  "www.zum.de/index.html"
                    // cline[1] er nu  "p1=%E6g&p2=p%E6rer&p3=%F8l"

    katgew=cline[1].split("&");          // del search parametre ved "&"
                    // katgew[0] er nu  "p1=%E6g"
                    // katgew[1] er nu  "p2=p%E6rer"
                    // katgew[2] er nu  "p3=%F8l"

    for (a=0;a<katgew.length;a++) {  // for hvert element i katgew arrayet
        zuw=katgew[a].split("=");    // del ved "="
                    // a=0 => zum[0] er nu "p1"      //parameternavn
                    // a=0 => zum[1] er nu "%E6g"    //parameterværdi
                    // a=1 => zum[0] er nu "p2"      //parameternavn
                    // a=1 => zum[1] er nu "p%E6rer" //parameterværdi
                    // a=2 => zum[0] er nu "p3"      //parameternavn
                    // a=2 => zum[1] er nu "%F8l"    //parameterværdi
        zuw[1]=zuw[1].replace(/\+/g," ");      // gør "+" til blanktegn
        zuw[1]=zuw[1].replace(/%E6/g,"æ");    // gør "%E6" til "æ"
        zuw[1]=zuw[1].replace(/%F8/g,"ø");    // gør "%F8" til "ø"
        ...
    }

Bortset fra konvertering af "+" til blanktegn vil  funktionen unescape gøre al den konvertering så de sidste linier kan erstattes med:
        zuw[1]=zuw[1].replace(/\+/g," ");      // gør "+" til blanktegn
        zuw[1]=unescape( zuw[1] );            // gør alle "%__" koder til isolatin-1 bogstaver
    }

Den der konvertering fra "+" til " " er en "feature" en eller anden idiot opfandt for at gøre det nemt at submitte formularer. Når de submittes med method='get' bliver blanktegn i formen automatisk lavet til "+". Jubii bruger det stadig hvis man kommer med noget de mener er en 'forældet browser' (som fx NS4.7). Desværre er jubii's serverside programmel blevet opdateret siden så det forstår ikke '+'. ( Jeg er lidt sur :-).

mvh JakobA
Avatar billede jakoba Nybegynder
10. april 2002 - 09:34 #11
PS: i stedet for at sige "den omsætter stadig ikke" så vis det test-script du lavede og de test resultater det gav. Så bliver det muligt at hjælpe.
Avatar billede christian_h Nybegynder
11. april 2002 - 04:07 #12
Hej JakobA.

Er det OK at jeg mailer dig i stedet, jeg kunne godt tænke mig at give dig url´en til mit test site, så du kan se problemet online, samtidig kunne jeg maile de to sider hvor formen og scriptet ligger på.

Mvh. christian_h
Avatar billede jakoba Nybegynder
11. april 2002 - 07:59 #13
Det er ok

mvh jakoba@jakoba.dk
Avatar billede jakoba Nybegynder
11. april 2002 - 21:38 #14
det viste sig at formen blev sendt med method='get' til en anden side så linieskift allerede var spist af get da textarealets data ankom til den anden side.

løstes ved at flytte tekstarealets data over i et hidden felt med
  hiddenfelt.value = escape( textarealet.value )
og så hente og bruge strengen i de skjulte felt på modtagersiden.

mvh JakobA
Avatar billede christian_h Nybegynder
11. april 2002 - 21:56 #15
Hej Jacob.

1000 tak for hjælpen, det havde jeg aldrig selv fundet udaf.
Jeg har tildelt dig 100 point i stedet for de 30

mvh. Christian H
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester