Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: lettere accentate

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    16

    lettere accentate

    salve a tutti
    mi rendo conto che è un problema molto dibatuto, ho provato a seguire le indicazioni scaturite in alcune discussioni ma non riesco a venirne a capo
    ecco il problema:
    ho un form nel quale si possono scrivere parole anche con lettere accentate
    quando lavoro con Firefox o Chrome scrivo e leggo qualsiasi lettera correttamente. Se leggo con explorer le lettere accentate si trasformano in simboli strani.
    Se scrivo o leggo con explorer va tutto bene, ma se vado a leggere con Firefox (o Chrome) leggo solo caratteri strani

    prima dell'update ho inserito questa tabella di conversione
    Codice PHP:
    $prova1=$modifica;     
    $prova1 str_replace('è''è'$prova1);     
    $prova2 str_replace('à''à'$prova1);     
    $prova3 str_replace('ò''ò'$prova2);     
    $prova4 str_replace('ù''ù'$prova3);     
    $prova5 str_replace('ì''ì'$prova4);     
    $prova6 str_replace('é''é'$prova5); 
    $modifica=$prova6
    Se salvo con Explorer nel db mi salva le lettere tipo
    Codice PHP:
    &egrave
    e quindi le leggo correttamente anche con Firefox, ma se poi risalvo con Firefox nel db vengono salvati questi caratteri in corrispondenza delle lettere accentate

    Codice PHP:
    (ìì (èè (éé (òò (àà(ùù 
    che vengono comunque rilette correttamente da Firefox, ma non da Explorer
    Ho provato ad introdurre questa modifica alla tabella di conversione
    Codice PHP:
    $prova1=$modifica;
        
    $prova1=str_replace('è''è'$prova1);
        
    $prova1=str_replace('è''è'$prova1);
        
    $prova2=str_replace('à''à'$prova1);
        
    $prova2=str_replace('Ã''à'$prova2);
        
    $prova3=str_replace('ò''ò'$prova2);
        
    $prova3=str_replace('ò''ò'$prova3);
        
    $prova4=str_replace('ù''ù'$prova3);
        
    $prova4=str_replace('ù''ù'$prova4);
        
    $prova5=str_replace('ì''ì'$prova4);
        
    $prova5=str_replace('ì''ì'$prova5);
        
    $prova6=str_replace('é''é'$prova5);
        
    $prova6=str_replace('é''é'$prova6);
    $modifica=$prova6
    ma non cambia nulla

    il db ha collation utf8_general_ci
    e la pagina web ha
    Codice PHP:
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    purtroppo so che chi userà le pagine da me realizzate userà sia Explorer sia Firefox

    cosa posso fare ?
    grazie per i consigli

  2. #2
    Sia la tabella che le singole righe devono essere in UTF8 nel database.
    Comunque se vuoi salvare nel database tutto già codificato in UTF8 esiste la funzione utf8_encode() che serve per codificare, e l'opposta a decodificare, le stringhe in utf8. All'interno metterai la variabile da modificare ( prova anche utf8_decode e vedi cosa succede).
    I problemi in questi casi possono essere basilari come piccoli errori di battitura.

    P.s. Ricordati anche di Safari! Se no tagli fuori tutti gli utenti Apple! Magari fregatene di Chrome, chiudi gli occhi su Linux (anche se..), bypassa i mobile ma occhio agli Apple!
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    16
    purtroppo non funziona
    ho provato ad inserire utf8_encode() prima di fare l'upload e utf8_decode() quando visualizzo a schermo ma la situazione è peggiorata
    ho lasciato la tabella di conversione che avevo realizzato sia quando faccio l'upload che quando leggo e l'attuale situazione è che con Firefox memorizzo e leggo senza problemi, ma nel db i caratteri accentati hanno questo aspetto
    codice:
    (ì) ì (è) è (é) é (ò) ò (à) à (ù) ù
    con Explorer, purtroppo i caratteri strani rimangono tali.
    E' singolare che nonostante abbia inserito anche la codifica da carattere atrano a carattere tipo html questa non venga fatta. Forse sono scorrette le istruzioni. Per sicurezza ve le reinserisco
    Codice PHP:
    $prova1=$modifica;     
    $prova1=str_replace('è''&egrave;'$prova1);     
    $prova1=str_replace('&Atilde;&uml;''&egrave;'$prova1);     
    $prova2=str_replace('à''&agrave;'$prova1);     
    $prova2=str_replace('&Atilde;''&agrave;'$prova2);     
    $prova3=str_replace('ò''&ograve;'$prova2);     
    $prova3=str_replace('&Atilde;&sup2;''&ograve;'$prova3);     
    $prova4=str_replace('ù''&ugrave;'$prova3);     
    $prova4=str_replace('&Atilde;&sup1;''&ugrave;'$prova4);     
    $prova5=str_replace('ì''&igrave;'$prova4);     
    $prova5=str_replace('&Atilde;&not;''&igrave;'$prova5);     
    $prova6=str_replace('é''&eacute;'$prova5);     
    $prova6=str_replace('&Atilde;&copy;''&eacute;'$prova6); 
    $modifica=$prova6
    ammetto di essere piuttosto sfiduciato
    grazie

  4. #4
    Convieni con me che utilizzare 15 righe per delle lettere accentate sia allucinante. Tuttavia una soluzione la dovevi pur trovare, giusto?
    Allora: è giusto che nel database sia formattato come da te indicato. Tuttavia, una volta che li visualizzi a schermo, essendo già formattati in UTF8, non ci sarà bisogno del decode. Se visualizzi i record normalmente togliendo la decodifica, vedrai che li visualizzerai correttamente.
    Se si risolve vuol dire che il tuo problema era nel salvataggio da campo testo in UTF8 nel db. Codificandolo prima di immetterlo salvi il testo nel vero formato UTF8 e nella pagina, come anticipato da te codificata in UTF8, vedrai il testo correttamente, anche se sul db lo vedi strano.
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    16
    convengo
    ma prima vorrei risolvere il problema e poi, se ci riesco semplifico la codifica.
    Sono anche d'accordo su ciò che dovrebbe accadere ma non accade.
    Appena posso rifarò delle prove seguendo quanto suggerisci (se non le ho già fatte ma non ricordo).
    Attualmente, ribadisco, se uso Firefox accade esattamente quanto affermi: leggo bene anche se nel db ci sono caratteri strani, il problema è che non accade con Explorer ... comunque faro delle prove e riferirò
    grazie comunque

  6. #6
    Io ho avuto lo stesso problema e ti riassumo in passi come ho risolto:

    La codica iniziale del mio testo è ISO8859-1, il DB memorizza in UTF-8, c'è bisogno quindi di una conversione tra caratteri.

    Passo 1: Trovo tutti i caratteri non compatibili con UTF8 nel testo iniziale e li sostituisco con le relative codiche "html entities"
    Codice PHP:
     essocietà ->societ&agrave

    Passo 2: Rimuovo dalla stringa (con una operazione di pulitura) tutti i caratteri che non rientrano nella codifica UTF-8 con la seguente funzione:

    Codice PHP:
    function cleanNotInUtf8String($s

        if(empty(
    $s)) return $s
        
    $s preg_match_all("#[\x09\x0A\x0D\x20-\x7E]| 
    [\xC2-\xDF][\x80-\xBF]| 
    \xE0[\xA0-\xBF][\x80-\xBF]| 
    [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}| 
    \xED[\x80-\x9F][\x80-\xBF]#x"
    $s$m ); 
        return 
    implode("",$m[0]); 


    Spero di esserti stato utile,
    Saluti,
    Vincenzo

  7. #7
    Prova a mettere

    Codice PHP:
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    nell'head sia della pagina di input che di quella dove visualizzi i dati dal DB.

    ciao.

  8. #8

    Re: lettere accentate

    Originariamente inviato da fabigno

    il db ha collation utf8_general_ci
    e la pagina web ha
    Codice PHP:
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    purtroppo so che chi userà le pagine da me realizzate userà sia Explorer sia Firefox
    I post servono per essere letti.
    Ce l'ho fatta! - ItalianPixel -

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    16

    RISOLTO lettere accentate

    Risolto
    Sperando che possa essere di aiuto vi comunico come sono riuscito a risolvere il problema che mi stava "assillando"

    1_ dopo ulteriori prove, inutili, ho introdotto queste righe prima del form di acquisizione testo eliminando tutte le codifiche dei caratteri accentati precedentemente introdotte

    codice:
    <html>
    <head>
    <title>titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    ..... form per invio testo
    
    </body>
    </html>
    2_ prima del upload ho eliminato tutte le codifiche delle lettere accentate

    Risultato: le lettere accentate vengono memorizzate normalmente (senza codifiche) nel db e visualizzate e memorizzate correttamente sia da Firefox che da Explorer

    grazie a tutti

    PS non riesco a segnalare nel titolo che il problema è stato risolto

  10. #10
    Felice che tu abbia risolto. Tuttavia non è corretto che usando la codifica della pagina in UTF8 non ti dia il risultato richiesto. Baso, come molti colleghi, la codifica dei miei siti all'utf8 e raramente si presentano problemi nel cross-browsing ( per lo meno almeno in questo).
    Quindi c'è un errore (lungi da me puntare il dito ma bisogna trovare la soluzione corretta). Può essere nei codici inseriti nella prima versione per la codifica degli accenti, oppure non salvavi in UTF8 o ancora non visualizzavi il testo in una pagina codificata in UTF8.
    Se non sapete quale sia il problema, andate a prove: cancellate parti di codice, controllate tutto, esagerate con le prove fino a che il problema non si risolve. Non c'è miglior soluzione (per esperienza personale ovviamente e per il sottoscritto).

    Ciao
    Ce l'ho fatta! - ItalianPixel -

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.