Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di henry78
    Registrato dal
    May 2001
    Messaggi
    1,264

    Problema di encode tra pagina e gli include..

    Ciao a tutti

    su un form con encode utf8, richiamo una funzione per trattare le stringhe da un file include.

    Ci deve essere qualche problema, perchè i caratteri speciali (éàò ecc) non vengono riconosciuti dalla funzione - sono quindi arrivato alla conclusione che è un problema di diverso encode tra le pagine.

    Come posso fare a risolvere??

  2. #2
    Utente di HTML.it L'avatar di henry78
    Registrato dal
    May 2001
    Messaggi
    1,264
    non riesco a capire il perchè...

    se la funzione si trova nella stessa pagina funziona pefettamente...

    se invece la includo in un file... non funziona più correttamente...

    com'e' possibile ?

  3. #3
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    posta il segmento!

  4. #4
    Utente di HTML.it L'avatar di henry78
    Registrato dal
    May 2001
    Messaggi
    1,264
    Originariamente inviato da tapu
    posta il segmento!
    l'include funz.php contiene questa funzione:

    function stringa($stringa){

    $stringa = trim($stringa);
    $stringa = str_replace("à","a",$stringa);
    $stringa = str_replace("è","e",$stringa);
    $stringa = str_replace("é","e",$stringa);
    $stringa = str_replace("&","e",$stringa);
    $stringa = str_replace("ò","o",$stringa);
    $stringa = str_replace("ù","u",$stringa);
    $stringa = str_replace("ì","i",$stringa);
    $stringa = ereg_replace("[^A-Za-z0-9]", "_", $stringa);

    return $stringa;
    }

    il form.php che richiama l'include funz.php

    ha semplicemente il richiamo alla funzione:

    $var = "cìàò";

    echo stringa($var);


    Se la funzione la metto direttamente su form.php, funziona alla meraviglia

    altrimenti.... se la richiamo dall'include.. le letteri speciali non vengono riconosciute dalla funzione...

  5. #5
    Utente di HTML.it L'avatar di henry78
    Registrato dal
    May 2001
    Messaggi
    1,264
    Boh... resterà un mistero..

  6. #6
    non è che il file che includi con php non è in formato UTF-8 mentre il file php dove lo scrivi è in formato UTF-8?

    la à in UTF-8 ha una codifica ben precisa mentre con lo standard ANSI ne ha un'altra (o con la CP-1250 di windows) di conseguenza, dato che non usi funzioni apposite, il file php che riceve i dati del form è probabilmente salvato in UTF-8 di conseguenza php, quando fa il replace, cerca i 2 byte che compongono la à e li sostituisce

    verifica la codifica del file .php del form e dell'include
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    Utente di HTML.it L'avatar di henry78
    Registrato dal
    May 2001
    Messaggi
    1,264
    Originariamente inviato da daniele_dll
    non è che il file che includi con php non è in formato UTF-8 mentre il file php dove lo scrivi è in formato UTF-8?

    la à in UTF-8 ha una codifica ben precisa mentre con lo standard ANSI ne ha un'altra (o con la CP-1250 di windows) di conseguenza, dato che non usi funzioni apposite, il file php che riceve i dati del form è probabilmente salvato in UTF-8 di conseguenza php, quando fa il replace, cerca i 2 byte che compongono la à e li sostituisce

    verifica la codifica del file .php del form e dell'include

    grazie per la risposta; immaginavo fosse un problema di encode.

    Mi sai dire come faccio a far divertare l'include UTF8?

    nel head del form c'e' questo:
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    nel file include (che non ha codice html) .... che ci devo mettere?

  8. #8
    quel meta tag è per il browser, io ti dico proprio il file php è salvato in formato UTF-8

    ora, anche se non c'è nessun'impedimento nell'usare un UTF-8 in file php, personalmente preferisco evitare perché potrebbero sorgere altri problemi

    per fare il lavoro che ti serve a te, basterebbe una preg del tipo

    Codice PHP:
    function stringa($stringa)
    {
        
    $stringa str_replace(array('à''è''ò''ì''ù'), array('a''e''o''i''u'), trim(utf8_decode($stringa)));
        
    $stringa preg_replace('/[^A-Z0-9_]/i''_'$stringa);
        
    $stringa preg_replace('/_+/i''_'$stringa);
        
        return 
    $stringa;

    Il primo str_replace accomuna tutto, il secondo preg_replace fa saltare tutto quello che non è lettera ed il terzo elimina le ripetizioni di _ (ps, preferisco però usare il - al posto di _)

    PS: ovviamente il file va codificato non UTF-8 se si mette l'utf8_decode ^^
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  9. #9
    Utente di HTML.it L'avatar di henry78
    Registrato dal
    May 2001
    Messaggi
    1,264
    Originariamente inviato da daniele_dll
    quel meta tag è per il browser, io ti dico proprio il file php è salvato in formato UTF-8

    ora, anche se non c'è nessun'impedimento nell'usare un UTF-8 in file php, personalmente preferisco evitare perché potrebbero sorgere altri problemi

    per fare il lavoro che ti serve a te, basterebbe una preg del tipo

    Codice PHP:
    function stringa($stringa)
    {
        
    $stringa str_replace(array('à''è''ò''ì''ù'), array('a''e''o''i''u'), trim(utf8_decode($stringa)));
        
    $stringa preg_replace('/[^A-Z0-9_]/i''_'$stringa);
        
    $stringa preg_replace('/_+/i''_'$stringa);
        
        return 
    $stringa;

    Il primo str_replace accomuna tutto, il secondo preg_replace fa saltare tutto quello che non è lettera ed il terzo elimina le ripetizioni di _ (ps, preferisco però usare il - al posto di _)

    PS: ovviamente il file va codificato non UTF-8 se si mette l'utf8_decode ^^
    Sai che non mi è chiaro...

    io uso dreamweaver, e tutti i file sono codificati di default UTF8;

    Sia il file include che il form dove richiamo la funzione sono quindi UTF8; non riesco a capire dove sia il problema

  10. #10
    per codificati in utf 8 intendi che è presente

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

    ?

    perché se è cosi non è codificato in UTF-8 il file è codificato in UTF-8 la comunicazione del browser
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.