• User

    Problema con caratteri speciali nell'url

    In prims un saluto a tutti
    Spero di non aver sbagliato sezione del forum.

    Ho un problema con gli url contenenti caratteri speciali
    Preciso che uso php5 e apache 2.2.6

    Sto creando un sito multilingua
    e in base ad alcune variabili faccio scrivere il link da php
    esempio:
    $page_de = "Zu_übersetzende_Dokumente_verschicken.php";
    $page_es = "enviar_los_documentos_para_traducir.php";
    $page_it = "inviare_documenti_da_tradurre.php";
    $page_fr = "envoyer_les_documents_a_traduire.php";
    $page_en = "send_documents_to_translate.php";

    ora in base al link
    esempio:
    print("<a href="ptth://localhost/$page_de">clicca qui</a>");

    il prob e' che quando ci clicco sopra mi appaiono vari errori :

    errore 1:
    Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

    Fatal error: Unknown: Failed opening required 'C:/www/mmag/Zu_übersetzende_Dokumente_verschicken.php' (include_path='.;C:\php5\pear') in Unknown on line **0

    Errore 2:
    **
    Forbidden

    You don't have permission to access /mmag/fr/envoyer_les_documents_à_traduire.php on this server.

    errore3:

    Not Found

    The requested URL /mmag/fr/envoyer_les_documents_Ã _traduire.php was not found on this server.

    ho provato un po' di tutto, anche a scrivere manualmente l'indirizzo

    e mi dice

    forbidenn

    ecc...

    ora il primo errore non ho lapiu' pallida idea a cosa sia dovuto

    il secondo credo sia un problema di charset

    il terzo non so' perche'.....

    Mi potreste dare qualche dritta???
    So che potrei creare una sola pagina e in base alla lingua selezionata farla aggiornare, ma a me serve una cosa tipo questa di wikipedia:

    en.wikipedia.org/wiki/Über

    Grazie mille a tutti

    :ciauz:


  • User

    😞
    Non riesco a venirne a capo,
    credo sia perche' apache usa di default
    la codifica dei caratteri iso-8859-1
    e quei caratteri sono in unicode

    io devo solo far aprire in locale, le pagine con caratteri speciali

    cavolo non credevo fosse cosi' difficile far partire un link
    tipo
    <a href="vvv.ciao.it/usabilità.html"> clicca qui </a>

    ho provato anche a scrivere il link cosi':
    <a href="vvv.ciao.it/usabilità"> clicca qui</a>
    e a rinominare la pagina cosi:
    usabilit%C3%A0.html

    ma non funziona
    Ho letto un po' di tutto in rete, ma non ne sono venuto a capo.

    Mi basta anche un indizio, qualsiasi cosa.

    :ciauz:


  • User

    prova con urlencode();

    ciaoo


  • User

    ok grazie, piu tardi ci provo, poi ti faccio sapere.... ora mi tocca andare a lavorare...... uffa voglio dormire ancora un po'...
    Buona giornata a tutti


  • User

    Allora ho scritto cosi'

    <?php
    $link ="usabilità.php";

    echo '<a href="', urlencode($link), '">clicca qui</a>';

    ?>

    e mi da lo stesso errore:
    Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

    Fatal error: Unknown: Failed opening required 'C:/xxx/xxx/usabilità .php' (include_path='.;C:\php5\pear') in Unknown on line **0
    :mmm:

    **Pero' se chiamo la pagina usabilità.html
    funziona tutto perfettamente.....

    Sono sempre piu' convinto che sia un problema con apache.......

    Aspetto altri consigli.....
    grazie mille comunque per la disponibilit à <------:D


  • User

    ma che content-type hai?
    è un problema di encoding

    usabilità .php
    usabilita.html


  • User

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    questo e' quello che uso per tutte le pagine.

    se invece intendi qualcosa nel httpd.conf di apache, ci guardo domani, e ti faccio sapere(non conosco ancora bene il file di configurazione di apache)
    ..ma prima o poi imparero.. .
    Grazie ancora
    ciaux


  • User

    ciao , penso di aver risolto il problema di encoding

    ti elenco i passaggi che ho fatto :

    1 ho scaricato la
    libiconv.dll.1.91.zip

    2 ho estratto la iconv.dll nella cartella di php con le altre dll

    3 nel php.ini
    inserito :
    iconv.input_encoding = UTF-8
    iconv.internal_encoding = UTF-8
    iconv.output_encoding = UTF-8

    4 sono andato sempre nel php.ini
    sotto [mbstring]

    ed ho aggiunto:
    mbstring.internal_encoding = UTF-8
    mbstring.http_input = UTF-8
    mbstring.http_output = UTF-8

    5 ho riavviato apahe
    .............................................................................

    Ora con la funzione phpinfo();
    ho controllato che fossero stati accettati i parametri...
    sotto
    iconv ho :
    iconv support enabled iconv implementation "libiconv" iconv library version 1.9
    DirectiveLocal ValueMaster Value iconv.input_encodingUTF-8UTF-8 iconv.internal_encodingUTF-8UTF-8 iconv.output_encodingUTF-8UTF-8
    e sotto
    [Mbstring]

    Multibyte Support enabled Multibyte string engine libmbfl Multibyte (japanese) regex support enabled Multibyte regex (oniguruma) version 4.4.4 Multibyte regex (oniguruma) backtrack check On
    mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
    DirectiveLocal ValueMaster Value mbstring.detect_orderno value**no value mbstring.encoding_translationOffOff mbstring.func_overload00 mbstring.http_inputUTF-8UTF-8 mbstring.http_outputUTF-8UTF-8 mbstring.internal_encodingUTF-8UTF-8 mbstring.languageneutralneutral mbstring.strict_detectionOffOff mbstring.substitute_characterno value**no value

    Ora
    ho provato a fare un po' di prove con questo codice:

    <?php
    $link ="usabilità.php";
    echo '<a href="', urlencode($link), '">clicca qui</a>';
    $link = iconv("UTF-8","ISO-8859-1","usabilità.php");
    echo '<a href="', urlencode($link), '">clicca qui</a>';

    ?>

    Nel primo link clicca qui
    ora mi da lo stesso errore, ma usabilità.php e' scritto bene
    nella barra degli indirizzi del brower c'e' scritto:
    xxxx/xxx/usabilit%C3%A0.php

    con il secondo link, mi scrive invece:
    forbidden
    You don't have permission to access /mmag/usabilità.php on this server.

    e nella barra degli indirizzi c'e' scritto:
    xxx/xxx/usabilit%E0.php

    :mmm:

    Bo.... mi sa che non arrivero' mai a capo di questo problema...... pero' insisto a provare..... sono
    newbie ma tenace..
    :ciauz:


  • User Attivo

    Puoi risolvere il problema facilmente usando un semplice parser per i caratteri particolari.
    Ti incollo una mia funzione.

    function modid($stringa) {
    $stringa = htmlentities($stringa);
    $str_1 = array('ò','à','ì','è','é','ù',"'");
    $str_2 = array('ò','à','ì','è','é','ù',"'");
    $stringa = str_replace($str_1, $str_2, $stringa);
    return $stringa;
    }

    Puoi modificarla tranquillamente e con qualche piccolo echo risolvere i problemi che ti affliggono 🙂


  • User

    grazie mille, ora devo schizare come un furetto al lavoro,
    domani ti faccio sapere com'e' andata...

    grazie ancora
    :ciauz: