Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    registrare caratteri accentati nel database mysql

    Ciao a tutti, ho creato un database mysql, all'interno vi è un campo tipo text per memorizzare testi lunghi.
    Mi capita spesso di dover memorizzare testi con caratteri accentati come la "è" e tanti altri, il carattere viene memorizzato nel campo regolarmente ma in fase di lettura mi compaiono simboli strani al posto dei caratteri accentati.
    Ho postato questa richiesta nella sessione php in quanto credo che la stringa debba essere trattata con php prima di registrarla nel database.
    Mi sapete consigliare qualcosa?
    Inoltre mi permetto di chedere anche un'altra cosa.
    Ho una stringa con il carattere carriage return "\n" usato nelle mail tipo "oggi è\nuna bella giornata".
    Devo registrare questa frase nel database, dovrei sostituire il carattere "\n" con quello che utilizza il database per andare a capo ma non sò qual'è. Mi sapete dire cosa devo mettere?
    Grazie mille.
    Ms.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Subito dopo l'istruzione mysql_connect() metti

    mysql_set_charset('qui_il_charset_del_db'); //ad esempio utf8 se per il db ufi utf8

  3. #3
    In php bisogna usare il comando:
    $stringa_da_inserire = str_replace("stringa da cercare","stringa che sostituisce quella da cercare","stringa dove cercare");
    In mysql non so quale sia il carattere per andare a capo ma io ho risolto il problema così:

    $stringa_di_ingresso = "ciao
    sono andrea."; //esempio di stringa
    $stringa_di_uscita = str_replace("/n", "
    ", $stringa_di_ingresso);

    Il carattere
    è il carattere per andare a capo in html quindi quando te visualizzi quello che hai messo nella tabella va a capo.
    Poi su mysql per visualizzare i caratteri speciali e accentati devi mettere nella sezione collation la sigla uf8. Nel mio mysql c'era la sezione uf8 con tanti tipi, io ho scelto uf8_general_ci
    AnDwHt

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Originariamente inviato da AndreWhite
    ...
    $stringa_di_uscita = str_replace("/n", "
    ", $stringa_di_ingresso);
    ...
    Esiste una funzione apposita per fare questo: nl2br()

    Comunque non risolve il suo problema, ha chiesto il carattere di "a capo" che usa mysql non html.

  5. #5
    Innanzitutto grazie a tutti per le risposte.
    Rispondo ad Alhazred.
    Ho usato l'istruzione che mi hai dato tu ma il probleema persiste.
    mysql_set_charset('qui_il_charset_del_db'); //ad esempio utf8 se per il db ufi utf8

    Tengo a precisare che sono 5 giorni che lavoro con mysql per cui non sono esperta.
    Come codifica ho scelto una a casaccio ossia utf8_bin e ho settato il codice che mi hai dato, nel seguente modo
    mysql_set_charset('utf8_bin');

    Questo è il codice che uso per registrare nel database:

    $messaggio="la casa è bella";
    $connessione = mysql_connect("localhost", "root", "") or die("Connessione non riuscita: " . mysql_error());
    mysql_set_charset('utf8_bin');
    mysql_select_db ( "nomedatabase", $connessione ) or die("Errore nella selezione del database");
    $query = mysql_query("insert into nometabella(nomecampo) values('$messaggio')");
    mysql_close($connessione);

    La frase mi viene registrata nel database correttamente ma, quando la leggo e la visualizzo in una tabella, i caratteri accentati vengono sostituiti da simboli strani come il quadratino.
    Per quanto riguarda il carattere di "a capo" so che mysql lo gestisce ma non riesco a capire qual'è il carattere, se riesco a trovarlo, la cosa diventerebbe sicuramente più facile rispetto alla sostituzione con il carattere
    .
    Fiduciosa in una risposta.
    Grazie mille.
    Ms.

  6. #6
    Ho risolto il problema.
    In fase di lettura devo convertire la codifica da 'UTF-8' a 'Windows-1252' come segue:
    $stringa=mb_convert_encoding($messaggio,'UTF-8','Windows-1252');

    E FUNZIONA BENISSIMO.

    Adesso non mi resta che risolvere l'ultimo problema ossia scoprire che carattere utilizza il database per andare a capo, spero che qualcuno mi possa aiutare.
    Grazie.
    Ms.

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Nell'head della pagina html hai inserito il tag per specificare il charset per la pagina? Anche questo deve essere concorde con il charset usato nel db e dalla connessione.
    Mettendo a posto questo dovresti poter risparmiare la conversione della stringa.

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.