Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    60

    sostituzione accenti in php

    ciao, ho un problema su cui mi sto spaccando la testa; ho provato a guardare in giro ma i problemi incontrati sono un po' diversi dai miei.
    Ho un database con codifica utf8-general-ci che salva le lettere accentate esattamente come sono, niente caratteri html o cose strane.
    Da php ho una funzione che pulisce gli url da queste lettere, sostituendole con lettere normali (la à diventa a etc..).

    La prima cosa strana è che quando faccio la select utilizzando la lettera senza accento (cioè ad esempio cerco "citta" invece che "città", ma nel db è salvata con l'accento!!!) la trova correttamente (come se nel db fosse salvata senza accento), ma va benissimo così, l'ho scritto perchè può essere d'aiuto a svelare l'arcano.
    Ho provato ad utilizare nella funzione sia str_replace che ereg_replace, ma entrambe non sembrano riconoscere le lettere accentate; ho utilizzato anche utf8_encode per trasformare la stringa ma a quel punto invece che sostituire le lettere accentate con la versione normale inserisce caratteri strani.

    Immagino che sia un problema di codifica, qualcuno sa darmi una mano please?
    Non esiste niente di più serio dell'arte; e non esiste niente di meno serio dell'artista. (O.Wilde)

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    60
    ok, ho capito perchè trova le lettere accentate come normali, è per la codifica _ci che è case insensitive

    ho provato ad usare come charset html il meta utf-8 (prima usavo l'iso-8859-1) ma ora tutte le accentate sono diventati punti di domanda, è strano perchè ha la stessa codifica del db...

    nessuno può aiutarmi?
    Non esiste niente di più serio dell'arte; e non esiste niente di meno serio dell'artista. (O.Wilde)

  3. #3
    cambia la codifica di connessione di php al db
    basta una query "Set names utf8" prima di ogni altra cosa e ad ogni pagina che si collega al db
    Perchè essere stupidi non è una menomazione ma un diritto di tutti!!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    60
    ok, ho risolto in questo modo:
    - ho modificato il php.ini inserendo la stringa default_charset = "utf-8" (ricordatevi di riavviare il server dopo aver salvato)

    - il charset utilizzato dall'html dev'essere impostato sull'utf-8 tramite il tag
    Codice PHP:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"
    - il database deve essere anch'esso in utf-8; potete controllarlo eseguendo la query
    Codice PHP:
    SHOW VARIABLES LIKE 'c%' 
    - se avete smanettato può essere che i campi delle tabelle utilizzino una codifica diversa, controllateli bene

    - ogni connessione da php a mysql deve avere la stessa codifica del database; utilizzate la seguente query per connettervi correttamente:

    Codice PHP:
    $connection mysql_pconnect($hostname$username$password) or trigger_error(mysql_error(),E_USER_ERROR); 
            
    mysql_select_db($database$connection);
            
    // ora recuperate la codifica del database e applicatela alla connessione che avete appena aperto
            
    $db_charset mysql_query"SHOW VARIABLES LIKE 'character_set_database'" );
            
    $charset_row mysql_fetch_assoc$db_charset );
            
    mysql_query"SET NAMES '" $charset_row['Value'] . "'" );
            unset( 
    $db_charset$charset_row ); 
    In questo modo potete usare anche caratteri accentati negli URL, e tutto funziona; ricordatevi di inserire i record sui quali avevate problemi poichè sono ancora con la codifica vecchia

    Spero sia utile a qualcuno, soprattutto utilizzando il mod_rewrite per la riscrittura degli URL la codifica è veramente un grosso problema da affrontare
    Non esiste niente di più serio dell'arte; e non esiste niente di meno serio dell'artista. (O.Wilde)

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.