[CGI/Bin] utf-8 decode

Dieses Thema im Forum "Webentwicklung" wurde erstellt von onip, 26. Mai 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 26. Mai 2009
    utf-8 decode

    hi,

    probier mich mit perl.
    möchte nen upload machen, das soweit funktioniert.
    jetzt möchte ich den dateinamen umändern,
    nur kommen die parameter von einer utf-8 seite.
    d.h. mein wert ist in utf-8 und kann daher nicht suchen ersetzen.
    hab jetzt echt sau viel gelesen gegooglet und komm einfach auf
    keinen grünen zweig.

    zum ablauf

    - ich hab ein formular (diese seite ist utf-8) zum uploaden.
    - ich übergebe an upload.cgi

    my $file = $cgi->param("file");
    my $filename = &MakeFilename($file);
    sub MakeFilename {
    my $file = shift;

    # irgendwelche ansätze
    #$file =~ s/\xc3(.)/chr(ord($1) + 0x40)/eg;
    #$file = utf8::decode($file);


    $file =~ s/[äÄ]+/ae/g;
    $file =~ s/[öÖ]+/oe/g;
    $file =~ s/[üÜ]+/ue/g;
    $file =~ s/[ß]+/ss/g;
    $file =~ s/[^a-zA-Z0-9\-\._-]+//gi;
    $file = lc($file);

    return $file;
    }

    filename: Ä_Bäüö-(Ä) ßerSchnitt.jpg
    uploadfile: Ä_Bäüö-(Ä) ßerSchnitt.jpg
    rename sollte sein: ae_baeueoe-aesserschnitt.jpg

    kann mir jemand weiterhelfen.

    // edit
    keine ahnung was ich gemacht hab.
    hab paar zeilen gelöscht und dann gings auf einmal.
    für die nachwelt (upload.pl):
    PHP:
    #!"C:\xampp\perl\bin\perl.exe"

    use  strict ;
    use 
    CGI ;

    my $cgi  = new  CGI ;
    my $file  $cgi -> param ( "file" );
    my $path  $cgi -> param ( "osupload" );

    $file  = & MakeFilename ( $file );
    my $fname  $path . $file ;

    open DAT , '>' . $fname  or die  'Error processing file: ' ,$!;
    binmode $file ;
    binmode DAT ;

    my $data ;
    while(
    read $file , $data , 1024 ) {
        print 
    DAT $data ;
    }
    close DAT ;

    print 
    $cgi -> header (- type  =>  'text/html' );
    print <<
    "HTML" ;
    <
    html >
    <
    head >
    <
    title > Fileupload </ title >
    </
    head >
    <
    body bgcolor = "#FFFFFF" >
    <
    h1 >Die  Datei $file wurde erfolgreich hochgeladen .</ h1 >

    <
    p >
    Die 
    Datei $file wurde erfolgreich auf dem Server
       gespeichert
    .
      </
    p >
    </
    body >
    </
    html >
    HTML


    sub MakeFilename 
    {
        
    my $file  shift ;
        
    $file  =~  s /\ xc3 (.)/ chr ( ord ($ 1 ) +  0x40 )/ eg ;

        
    $file  =~  s /[ äÄ ]+/ ae / g ;
        
    $file  =~  s /[ öÖ ]+/ oe / g ;
        
    $file  =~  s /[ üÜ ]+/ ue / g ;
        
    $file  =~  s / ß / ss / g ;
        
    $file  =~  s /[^ a - zA - Z0 - 9 \-\. _ -]+ //gi;  
        
    $file  lc ( $file );
        
        return 
    $file ;
    }
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.