Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Codificare i caratteri

  1. #1

    Codificare i caratteri

    Salve a tutti, faccio una domanda che per voi sarà banale ma per me è diventato un vero problema.
    Ogni volta che creo una pagina php ho problemi di codifica dei caratteri accentati e devo andare a tentativi, tentativi che mi rubano molto tempo e pasienza
    Ho così ho deciso di affrontare il problema e ho incominciato a studiare le codifiche e a fare piccoli esempi.
    Ho creato il seguente codice semplice semplice:
    codice:
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <?php
        $parola="parole accentate èéà";
        echo $parola;
        ?>
    </body>
    </html>
    Ho inserito un meta per stabilire il tipo di codifica ossia utf-8
    Purtroppo il testo contenuto nella stringa "parola" viene visualizzato senza i caratteri accentati (i caratteri accentati vengono sostituiti da quadrattini).
    Se elimino il meta che ho inserito, tutto funziona correttamente.
    Mi potete dire che tipo di codifica utilizza un server come, nel mio caso, altervista?
    Scusate la domanda ma con le codifiche stò messa un pò male.
    Grazie mille.
    Maria.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Salva anche il file con codifica utf-8, poi dovrebbe funzionare.

  3. #3
    Grazie Alhazred.
    In effetti il salvataggio del file in utf-8 mi era sfuggito.
    Adesso ho risolto tutto, i caratteri mi compaiono bene con l'istruzione echo, l'invio mail mi viene effettuata correttamente con l'istruzione "mail" di php, opportunamente modificata.
    Mi rimane ancora il problema del database.
    Posto un attimino il codice:
    codice:
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <?php
        $stringa="parole accentate èéà";
        echo $stringa;
    
    //connessione e scrittura nel database    
    $connessione = mysql_connect("localhost", "root", "") or die("Connessione non riuscita: " . mysql_error());
        mysql_select_db ("nomedatabase", $connessione ) or die("Errore nella selezione del database");
        $query = mysql_query("insert into offerte (offerte) values ('$stringa')");
        mysql_close($connessione);
    </body>
    </html>
    I caratteri accentati mi vengono scritti in maniera errata nel database.
    Ho dovuto aggiungere le seguenti istruzioni per riuscire a scriverli correttamente:

    codice:
        mysql_set_charset('utf8');
        mysql_query("SET NAMES 'UTF8'");
        mysql_query ("SET SESSION character_set_connection = 'utf8';
        SET SESSION character_set_client = 'utf8';
        SET SESSION character_set_database = 'utf8';
        SET SESSION character_set_results = 'utf8' ");
    e funziona.
    Adesso mi chiedo come mai è necessario settare ancora il tipo di codifica che devo utilizzare dal momento che:
    il database utilizza la codifica utf8_general_ci
    la tabella lo stesso
    il campo idem
    e la stringa è già codificata in utf8_general_ci

    Dopo aver risolto questo dilemma, dovrei aver il necessario per sistemare il mio sito.
    Grazie mille.
    Maria

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Beh dipende i campi interni delle colonne se erano in ascii o iso qualcosa ... beh indipendentemente dal server allora venivano salvati "male". Altrimenti devi controllare gli srcrip di salvataggio e fare attenzione alle codifiche dei files stessi e delle funzioni che usi.

    Purtroppo php da sto punto di vista e' ostico poiche non tutte le funzioni stad sulle stringhe lavorano correttamente con stringhe utf e molto spesso devi specificare che usi utf-8 o adirittura usare le funzioni mb_funzione() (MultiByte) ...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.